Update
От: migel  
Дата: 14.09.04 18:08
Оценка:
Пофиксены ошибки.
Добавлена поддержка foreach.
Объявление делегата теперь нормально выводиться.
Re: Update
От: HotDog Швейцария www.denebspace.com
Дата: 15.09.04 06:55
Оценка:
Здравствуйте, migel, Вы писали:

M>Пофиксены ошибки.

M>Добавлена поддержка foreach.
M>Объявление делегата теперь нормально выводиться.

Традиционно пробую на ABCUpload5.dll от ABCUpload.NET...
Все так же валится по различныи ексепшинам, но прогресс на лицо,
в трее можно теперь раскрыть первую ноду
Re[2]: Update
От: migel  
Дата: 15.09.04 07:12
Оценка:
Здравствуйте, HotDog, Вы писали:

HD>Традиционно пробую на ABCUpload5.dll от ABCUpload.NET...

HD>Все так же валится по различныи ексепшинам, но прогресс на лицо,
HD>в трее можно теперь раскрыть первую ноду
Эээ ссылочкой не кинетесь откуда сие можно взять?
... << RSDN@Home 1.1.4 beta 2 rev. 172>>
Re[2]: Update
От: migel  
Дата: 15.09.04 08:42
Оценка:
Здравствуйте, HotDog, Вы писали:

HD>Традиционно пробую на ABCUpload5.dll от ABCUpload.NET...

HD>Все так же валится по различныи ексепшинам, но прогресс на лицо,
HD>в трее можно теперь раскрыть первую ноду
Отбой, уже качается
... << RSDN@Home 1.1.4 beta 2 rev. 172>>
Re[2]: Update
От: migel  
Дата: 15.09.04 10:12
Оценка:
Здравствуйте, HotDog, Вы писали:

HD>Здравствуйте, migel, Вы писали:


M>>Пофиксены ошибки.

M>>Добавлена поддержка foreach.
M>>Объявление делегата теперь нормально выводиться.

HD>Традиционно пробую на ABCUpload5.dll от ABCUpload.NET...

HD>Все так же валится по различныи ексепшинам, но прогресс на лицо,
HD>в трее можно теперь раскрыть первую ноду
Странно кроме того что эта либа у меня попросила .NET v 1.0 ничего не происходит
mscorlib 1.1 подсовывать не пробывали?
ИМХО кстати надо наверное сделать авто ресолвинг сборок от МС к более старшей версии если требуемой нет...
как думаете?
... << RSDN@Home 1.1.4 beta 2 rev. 172>>
Re[3]: Update
От: HotDog Швейцария www.denebspace.com
Дата: 16.09.04 06:56
Оценка:
Здравствуйте, migel, Вы писали:

M>Странно кроме того что эта либа у меня попросила .NET v 1.0 ничего не происходит

M>mscorlib 1.1 подсовывать не пробывали?

Так у меня она ничего не просила
Просто сваливала по NullReferenceException, но после Continue всетаки грузится дальше и всплывает в дереве.

Теперь иду дальше, открываю ветки
ABCUpload5.dll->WebSupergoo.ABCUpload5, на классе x1 жму Disassembler ->

"An unhandled exception of type 'Phoenix.Reflection.Reader.ModuleReaderException' occurred in ilreader.dll" в GetTypeReference(int token)

Decompile падает с криками о System.NullReferenceException в WriteExpressionsList(...)

Тестил все на ревижене 42 из свина, собирал сам

M>ИМХО кстати надо наверное сделать авто ресолвинг сборок от МС к более старшей версии если требуемой нет...

M>как думаете?

На моей машине вообще нет 1.0, поэтому такая фича просто архиважна
Re[4]: Update
От: migel  
Дата: 16.09.04 07:12
Оценка:
Здравствуйте, HotDog, Вы писали:

HD>Здравствуйте, migel, Вы писали:


M>>Странно кроме того что эта либа у меня попросила .NET v 1.0 ничего не происходит

M>>mscorlib 1.1 подсовывать не пробывали?

HD>Так у меня она ничего не просила

HD>Просто сваливала по NullReferenceException, но после Continue всетаки грузится дальше и всплывает в дереве.
Это глюки инициализации статических переменных
Пытаюсь забороть...

HD>Теперь иду дальше, открываю ветки

HD>ABCUpload5.dll->WebSupergoo.ABCUpload5, на классе x1 жму Disassembler ->

HD>"An unhandled exception of type 'Phoenix.Reflection.Reader.ModuleReaderException' occurred in ilreader.dll" в GetTypeReference(int token)


Аха это она пытается 1.0 все таки загрузить
HD>Decompile падает с криками о System.NullReferenceException в WriteExpressionsList(...)

Это последствия
M>>ИМХО кстати надо наверное сделать авто ресолвинг сборок от МС к более старшей версии если требуемой нет...
M>>как думаете?

HD>На моей машине вообще нет 1.0, поэтому такая фича просто архиважна

Ок бум думать.
... << RSDN@Home 1.1.4 beta 2 rev. 172>>
Re: Update
От: HotDog Швейцария www.denebspace.com
Дата: 22.09.04 10:40
Оценка:
Здравствуйте, migel, Вы писали:

Rev 43:


ILReader\Reflection\ArrayInfo.cs' could not be opened ('The system cannot find the file specified. ')


Не все зачекано ?
Re[2]: Update
От: migel  
Дата: 22.09.04 10:50
Оценка:
Здравствуйте, HotDog, Вы писали:

HD>Rev 43:

HD>ILReader\Reflection\ArrayInfo.cs' could not be opened ('The system cannot find the file specified. ')
HD>Не все зачекано ?
Пофиксил..
только проблемы с отсутствующим framework пока остались
Я тут неприятную последовательность команд нарыл на которой падает декомпилятор (см. Tests/TernaryOperatorTest.cs )
пока в раздумьях как фиксить
... << RSDN@Home 1.1.4 beta 2 rev. 172>>
Re[3]: Update
От: HotDog Швейцария www.denebspace.com
Дата: 22.09.04 11:03
Оценка:
Здравствуйте, migel, Вы писали:

M>Пофиксил..


Ага, теперь нормально компилит.

M>Я тут неприятную последовательность команд нарыл на которой падает декомпилятор (см. Tests/TernaryOperatorTest.cs )

M>пока в раздумьях как фиксить

посмотреть не могу из за отстуствия TernaryOperatorTest.cs в SVN
Re[4]: Update
От: migel  
Дата: 22.09.04 11:28
Оценка:
Здравствуйте, HotDog, Вы писали:

HD>Здравствуйте, migel, Вы писали:


M>>Пофиксил..


HD>Ага, теперь нормально компилит.


M>>Я тут неприятную последовательность команд нарыл на которой падает декомпилятор (см. Tests/TernaryOperatorTest.cs )

M>>пока в раздумьях как фиксить

HD>посмотреть не могу из за отстуствия TernaryOperatorTest.cs в SVN

что за напасть
положил.
... << RSDN@Home 1.1.4 beta 2 rev. 172>>
Re[5]: Update
От: HotDog Швейцария www.denebspace.com
Дата: 22.09.04 13:12
Оценка:
Здравствуйте, migel, Вы писали:

M>>>Я тут неприятную последовательность команд нарыл на которой падает декомпилятор (см. Tests/TernaryOperatorTest.cs )

M>>>пока в раздумьях как фиксить

Интересный факт, что Reflector "собирает" выражение в совершенно другом виде

    int num1 = 0;
    int num2 = 100;
    int num3 = (num2 != 100) ? 10 : ((num1 == 0) ? 1 : 100);


исходный

    int x = 0;
    int y = 100;
    int z = x == 0 ? ((y != 100) ? 10 : 1) : 100;


да, еще хотел спросить: я не обфусцирую сборки, но ни феникс ни рефлектор не показывают оригинальные названия переменных.
Это невозможно или просто не до этого пока ?
Re[6]: Update
От: migel  
Дата: 22.09.04 13:21
Оценка:
Здравствуйте, HotDog, Вы писали:

HD>Интересный факт, что Reflector "собирает" выражение в совершенно другом виде


HD>
HD>    int num1 = 0;
HD>    int num2 = 100;
HD>    int num3 = (num2 != 100) ? 10 : ((num1 == 0) ? 1 : 100);
HD>


HD>исходный


HD>
HD>    int x = 0;
HD>    int y = 100;
HD>    int z = x == 0 ? ((y != 100) ? 10 : 1) : 100;
HD>


скорее всего рефлектор стэк раскручивает с конца
HD>да, еще хотел спросить: я не обфусцирую сборки, но ни феникс ни рефлектор не показывают оригинальные названия переменных.
HD>Это невозможно или просто не до этого пока ?
Имен локальных переменных по определению нет в метаданных
... << RSDN@Home 1.1.4 beta 2 rev. 172>>
Re[7]: Update
От: HotDog Швейцария www.denebspace.com
Дата: 22.09.04 13:24
Оценка:
Здравствуйте, migel, Вы писали:

M>Имен локальных переменных по определению нет в метаданных


Нда, опять мокрософт облажался
Re[8]: Update
От: migel  
Дата: 22.09.04 13:35
Оценка:
Здравствуйте, HotDog, Вы писали:

HD>Здравствуйте, migel, Вы писали:


M>>Имен локальных переменных по определению нет в метаданных


HD>Нда, опять мокрософт облажался

Да нет, просто это ненужная инфа для рунтайма, вот их и не вводили...
По идее если есть отладочная информация то можно из нее брать именя переменных... только ктож это добро конечному пользователю поставлять то будет .
... << RSDN@Home 1.1.4 beta 2 rev. 172>>
Re[6]: Update
От: Mr.Gremlin Украина  
Дата: 22.09.04 14:10
Оценка:
Здравствуйте, HotDog, Вы писали:


HD>Интересный факт, что Reflector "собирает" выражение в совершенно другом виде


HD>
HD>    int num1 = 0;
HD>    int num2 = 100;
HD>    int num3 = (num2 != 100) ? 10 : ((num1 == 0) ? 1 : 100);
HD>


HD>исходный


HD>
HD>    int x = 0;
HD>    int y = 100;
HD>    int z = x == 0 ? ((y != 100) ? 10 : 1) : 100;
HD>


А Reflector значит облажался , не правомочное преобразование.
public class A {

    public int f1(int x, int y) {
    int z = (x == 0) ? ((y != 100) ? 10 : 1) : 100;
      return z;
    } 

    public int f2(int x, int y) {
    int z = (y != 100) ? 10 : ((x == 0) ? 1 : 100);
      return z;
    } 

    public static void Main() {
    
        A a = new A();
        
        System.Console.WriteLine(a.f1(1, 1).ToString());
        System.Console.WriteLine(a.f2(1, 1).ToString());

    }
}


Должно выводиться 100 и 10, а Reflector декомпилирует f1 и f2 одинаково (как f2).
... << RSDN@Home 1.1.4 @@subversion >>
Re[7]: Update
От: migel  
Дата: 22.09.04 14:47
Оценка:
Здравствуйте, Mr.Gremlin, Вы писали:

MG>Здравствуйте, HotDog, Вы писали:


MG>А Reflector значит облажался , не правомочное преобразование.

MG>
MG>public class A {

MG>    public int f1(int x, int y) {
MG>    int z = (x == 0) ? ((y != 100) ? 10 : 1) : 100;
MG>      return z;
MG>    } 

MG>    public int f2(int x, int y) {
MG>    int z = (y != 100) ? 10 : ((x == 0) ? 1 : 100);
MG>      return z;
MG>    } 

MG>    public static void Main() {
    
MG>        A a = new A();
        
MG>        System.Console.WriteLine(a.f1(1, 1).ToString());
MG>        System.Console.WriteLine(a.f2(1, 1).ToString());

MG>    }
MG>}
MG>


MG>Должно выводиться 100 и 10, а Reflector декомпилирует f1 и f2 одинаково (как f2).

Мдааа засада однако
а как с таким саламандер справляется?
... << RSDN@Home 1.1.4 beta 2 rev. 172>>
Re[8]: Update
От: migel  
Дата: 22.09.04 15:01
Оценка:
Здравствуйте, migel, Вы писали:

M>Здравствуйте, Mr.Gremlin, Вы писали:


MG>>Должно выводиться 100 и 10, а Reflector декомпилирует f1 и f2 одинаково (как f2).

M>Мдааа засада однако
M>а как с таким саламандер справляется?
Вот так:
    public int f1(int x, int y)
    {
      return (x != 0) ? 100 : ((y == 100) ? 1 : 10);
    }

    public int f2(int x, int y)
    {
      return (y == 100) ? ((x != 0) ? 100 : 1) : 10;
    }

оригинал
    public int f1(int x, int y) 
    {
        int z = (x == 0) ? ((y != 100) ? 10 : 1) : 100;
      
        return z;
    } 

    public int f2(int x, int y) 
    {
        int z = (y != 100) ? 10 : ((x == 0) ? 1 : 100);
        return z;
    }
... << RSDN@Home 1.1.4 beta 2 rev. 172>>
Re[8]: Update
От: Mr.Gremlin Украина  
Дата: 22.09.04 15:03
Оценка:
Здравствуйте, migel, Вы писали:

M>Мдааа засада однако

M>а как с таким саламандер справляется?

А с саламандер-ом все нормально . Декомпилирует правильно, покрайней мере это.
... << RSDN@Home 1.1.4 @@subversion >>
Re[8]: Update
От: Mace Windu  
Дата: 22.09.04 15:22
Оценка:
Здравствуйте, migel, Вы писали:

M>Мдааа засада однако


Тернарные операции вообще одна из самых засадных вещей при декомпиляции сборок. Этот пример кстати не трудный, я встречал по несколько вложенных тернарных операций, в которых ещё и объекты создаются — вот где засада

PS: Кстати моя тулза аналогичного назначения справилась :
        public int f1(int x, int y)
        {
            int i1;
            int i2;

            return i2 = i1 = x == 0?y != 100?10:1:100;
        }
        public int f2(int x, int y)
        {
            int i1;
            int i2;

            return i2 = i1 = y != 100?10:x == 0?1:100;
        }
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.