Сейчас на форуме: -Sanchez-, Alf, Adler, Rio (+5 невидимых)

 eXeL@B —› Софт, инструменты —› Interactive Delphi Reconstructor (IDR). Миттельшпиль
<< 1 ... 18 . 19 . 20 . 21 . 22 . 23 . 24 . 25 . 26 . 27 . 28 ... 47 . 48 . >>
Посл.ответ Сообщение

Ранг: 188.1 (ветеран), 419thx
Активность: 0.140
Статус: Участник

Создано: 06 декабря 2009 17:29 · Поправил: crypto
· Личное сообщение · #1

IDR (Interactive Delphi Reconstructor) – декомпилятор исполняемых файлов (EXE) и динамических библиотек (DLL), написанных на языке Delphi и выполняемых в среде 32х-разрядных операционных систем Windows.



Программа, прежде всего, предназначена для компаний, занимающихся разработкой антивирусного программного обеспечения. Она также может в значительной мере помочь программистам в восстановлении утраченных исходных текстов программ.

Текущей версией программы могут обрабатываться файлы (как GUI, так и консольных приложений), скомпилированные компиляторами версий Delphi2 – Delphi2010. Ведется работа по поддержке Дельфи 2011.

Конечной целью проекта является разработка программы, способной восстановить большую часть исходных Delphi-текстов из скомпилированного файла, но пока IDR, как и другие Delphi-декомпиляторы, сделать этого не может. Тем не менее, IDR может значительно облегчить такой процесс. По сравнению с другими декомпиляторами анализ, выполненный IDR, отличается наибольшей полнотой и достоверностью. Кроме того, высокая интерактивность делает работу с программой комфортной и (не побоимся этого слова) приятной.

IDR выполняет статический анализ (анализируемый файл не запускается на выполнение), что позволяет безопасно изучать вирусы, трояны и прочие приложения, запуск которых опасен или нежелателен.

Программа не требует установки и не делает никаких записей в реестр Windows.


Официальный сайт:
kpnc.org/idr32
[Note] Недоступен после трагической гибели Криса (RIP)

Гитхаб
Github sources

Скачать:
Страница загрузки

Dropbox автора
https://www.dropbox.com/sh/9ran313nidqtagb/AADl_m_9GVYSiXUviZtDQWQHa?dl=0

Актуальная версия программы:

Исполняемый файл
Внимание! Требует наличия вспомогательных файлов и баз знаний!!!

Базы данных качать по
ссылке.

Для работы необходимо скачать базу знаний + последнюю версию программы



Ранг: 188.1 (ветеран), 419thx
Активность: 0.140
Статус: Участник

Создано: 27 августа 2013 17:13 · Поправил: crypto
· Личное сообщение · #2

Обычно, если аудитория молчит и вопросов не задает, это плохо



Ранг: 301.4 (мудрец), 194thx
Активность: 0.170.01
Статус: Участник

Создано: 27 августа 2013 17:51 · Поправил: Veliant
· Личное сообщение · #3

а можно ознакомиться с changelog?
в каких случаях вместо параметров вызова функции втыкаются смайлы '' ?
и можно как-нибудь заставить декомпилятор пройти дальше места где он выдает Under Construct?

| Сообщение посчитали полезным: DimitarSerg

Ранг: 36.1 (посетитель), 11thx
Активность: 0.020
Статус: Участник

Создано: 27 августа 2013 17:54 · Поправил: Jonny
· Личное сообщение · #4

crypto пишет:
Обычно, если аудитория молчит и вопросов не задает, это плохо

Меня немного смущает то, что программа просит ввести тип eax в выражении fs:[eax].

Code:
  1.  Classes::TStreamAdapter.Read
  2.  00427874    push       ebp
  3.  00427875    mov        ebp,esp
  4.  00427877    push       ebx
  5.  00427878    push       esi
  6.  00427879    push       edi
  7.  0042787A    mov        edx,dword ptr [ebp+0C]
  8.  0042787D    mov        eax,dword ptr [ebp+8]
  9.  00427880    xor        ecx,ecx
  10.  00427882    push       ebp
  11.  00427883    push       4278C3
  12.  00427888    push       dword ptr fs:[ecx]
  13.  0042788B    mov        dword ptr fs:[ecx],esp
  14.  0042788E    test       edx,edx
  15. >00427890    jne        004278A1
  16.  00427892    mov        ebx,80030009
  17.  00427897    xor        eax,eax
  18.  00427899    pop        edx
  19.  0042789A    pop        ecx
  20.  0042789B    pop        ecx
  21.  0042789C    mov        dword ptr fs:[eax],edx
  22. >0042789F    jmp        004278D2
  23.  004278A1    mov        eax,dword ptr [eax+0C]
  24.  004278A4    mov        ecx,dword ptr [ebp+10]
  25.  004278A7    mov        ebx,dword ptr [eax]
  26.  004278A9    call       dword ptr [ebx+0C]
  27.  004278AC    cmp        dword ptr [ebp+14],0
  28. >004278B0    je         004278B7
  29.  004278B2    mov        edx,dword ptr [ebp+14]
  30.  004278B5    mov        dword ptr [edx],eax
  31.  004278B7    xor        ebx,ebx
  32.  004278B9    xor        eax,eax
  33.  004278BB    pop        edx
  34.  004278BC    pop        ecx
  35.  004278BD    pop        ecx
  36.  004278BE    mov        dword ptr fs:[eax],edx
  37. >004278C1    jmp        004278D2
  38. <004278C3    jmp        @HandleAnyException
  39.  004278C8    mov        ebx,1
  40.  004278CD    call       @DoneExcept
  41.  004278D2    mov        eax,ebx
  42.  004278D4    pop        edi
  43.  004278D5    pop        esi
  44.  004278D6    pop        ebx
  45.  004278D7    pop        ebp
  46.  004278D8    ret        10


На инструкции 0042789C mov dword ptr fs:[eax],edx останавливается.
Это код Classes::TStreamAdapter.Read из Delphi 7.




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 27 августа 2013 18:09
· Личное сообщение · #5

я вот только попробовал. не понял пока всех тонкостей, видимо почему у меня получается вот так
Code:
  1. _eax_ := sub_005D88F4_;
  2.   if (_eax_{sub_005D88F4_} <> 0) then
  3.   begin
  4. ...
  5. а здесь еще хлеще
  6.  _eax_ := sub_006133E0;
  7.   if ( <> 0) then
  8.   begin
  9. ...

неправильно прототипы указал? так так просто в первом случае байт возвращается, во втором дворд
з.ы. пипец как не хватает подсветки синтаксиса...

-----
[nice coder and reverser]




Ранг: 36.1 (посетитель), 11thx
Активность: 0.020
Статус: Участник

Создано: 27 августа 2013 19:08 · Поправил: Jonny
· Личное сообщение · #6

TComponent.QueryInterface, TComponent._AddRel, TComponent._Release - часто вылетает ошибка EAccessViolation.
Uod. Не смог повторить ошибку.



Ранг: 0.0 (гость)
Активность: 0.250
Статус: Участник

Создано: 27 августа 2013 19:43
· Личное сообщение · #7

crypto пишет:
Обычно, если аудитория молчит и вопросов не задает, это плохо

Баг, если во время загрузки базы нажать src:
Хотя баг работает и после загрузки, ну или может это фича не полной версии.
Такая же хрень временами выскакивает сама, во время загрузки базы, но там рандомно, один раз нормально грузится, а через 20 может вылезти окошко причем на том же самом приложении которое грузилось до этого нормально.



Ранг: 67.4 (постоянный), 6thx
Активность: 0.050
Статус: Участник

Создано: 27 августа 2013 20:01 · Поправил: Kiev78
· Личное сообщение · #8

---



Ранг: 188.1 (ветеран), 419thx
Активность: 0.140
Статус: Участник

Создано: 28 августа 2013 09:28 · Поправил: crypto
· Личное сообщение · #9

Veliant
Поскольку программа приватная, то я лог не веду (зачем он мне, если я сам ошибки нахожу и потом их сам правлю). Но если крупными мазками, то практически сделан декомпилятор (control flow работает и в ограниченной версии), добавлены плагины для распаковки (расшифровки форм), декомпиляция стала интерактивной, ну и баги там всякие были исправлены. Да, забыл, поддерживаются юзерские типы (пока только Record).
Смайлики кажись втыкаются всюду.
Если встретилось Under Construction, нужен фрагмент кода и адрес (обычно это место выделяется).
Jonny
Честно говоря, я с такой конструкцией пока не встречался (Exit из секции try). Спасибо, подумаю, как это обойти.
Hellspawn
На мой взгляд, первый if нормальный, при редактировании сам будешь решать, что оставить _eax_ или вызов (бывает, что регистр потом будет использоваться, хотя с _eax_ это редко бывает).
Второй if - видимо баг, выложи фрагмент кода или пришли файл с указанием адреса.
F_a_u_s_t
Икцепшены могут возникать, если в процессе анализа пытаться что-то делать. В данном случае наверное нужно дизаблить кнопку Src. Я об этом все время помню и не нажимаю. Поскольку версия приватная, я к некоторым багам уже привык и не допускаю их появления. Что касается скрина, похоже, версия Дельфи неправильно определилась или нужно выбрать из нескольких возможных вариантах. Неплохо было бы файл получить.
Kiev78
Нужно завершить прототип выделенного вызова (имена:типы аргументов и тип возвращаемого значения, если это функция). Для этого входим в данный вызов, вызываем popup-меню, выбираем Edit и пишем прототип). С прототипом аккуратнее, на сайте вроде сказано, как его заполнять.

| Сообщение посчитали полезным: vden

Ранг: 0.0 (гость)
Активность: 0.250
Статус: Участник

Создано: 28 августа 2013 10:40 · Поправил: F_a_u_s_t
· Личное сообщение · #10

crypto пишет:
Неплохо было бы файл получить.

Версия Delphi 2006 из нестандартного там Jcl, а так, вполне обычный ( приватный ) быдлокод.
Пару раз крэшилась сама программа, полный вылет.
Хз, приложу еще один скрин, может понятней будет, на каком этапе анализа падает, ничего не делал, даже мышку не трогал, упасть может на любом методе, необязательно форма.

Да, еще забыл, если загрузить что то , пробежаться по методам и процедурам тыкая src, а потом
не закрывая декомпиль загрузить что то другое, то с вероятность процентов эдак 65-70 вылазит сепшен.



Ранг: 112.9 (ветеран), 186thx
Активность: 0.090.01
Статус: Участник

Создано: 28 августа 2013 11:06 · Поправил: vden
· Личное сообщение · #11

Порадовало, что извлекает Rtti имена параметров функции

А Exit специально вставляется в каждый case?
Просто здесь он не обязательный. Но разобрало case четко.
Code:
  1. function TIDRTest.testCases2(switch:Integer):Integer;
  2. begin
  3.   //004061D8
  4.   case switch of
  5.     128:
  6.     begin
  7.       //00406206
  8.       _eax_ := $80{128};
  9.       Exit;
  10.     end;
  11.     256:
  12.     begin
  13.       //0040620C
  14.       _eax_ := $100{256};
  15.       Exit;
  16.     end;
  17.     64:
  18.     begin
  19.       //00406212
  20.       _eax_ := $40{64};
  21.       Exit;
  22.     end;
  23.     1:
  24.     begin
  25.       //00406200
  26.       _eax_ := 1;
  27.       Exit;
  28.     end;
  29.     16:
  30.     begin
  31.       //0040621E
  32.       _eax_ := $10{16};
  33.     end;
  34.     32:
  35.     begin
  36.       //00406218
  37.       _eax_ := $20{32};
  38.       Exit;
  39.     end;
  40.   end;
  41. end;


Насколько сложно будет заменить ListBox в SourceCode на SynEdit?
Выглядело бы приятнее.

Scale 1 можно игнорировать.
Code:
  1. function TIDRTest.f1(a:Integer; b:Integer):Integer;
  2. begin
  3.   //00406158
  4.   _eax_ := _ecx_ + _edx_ * 1;
  5. end;




Ранг: 188.1 (ветеран), 419thx
Активность: 0.140
Статус: Участник

Создано: 28 августа 2013 11:40
· Личное сообщение · #12

F_a_u_s_t
Как здесь любят говорить, я не могу заниматься гаданием, файл в студию.
vden
Exit - временная мера, помогающая исправить ошибки. Пока не придумал, как от этого избавиться.
Не понял про SynEdit, в чем сложности?
Ну да, можно игнорировать, но если 1 была задана константой, то все же этот вариант ближе к исходнику, да и компилятор умножение на явно заданную 1 пропустит скорее всего.



Ранг: 112.9 (ветеран), 186thx
Активность: 0.090.01
Статус: Участник

Создано: 28 августа 2013 11:54 · Поправил: vden
· Личное сообщение · #13

Exit - временная мера, помогающая исправить ошибки. Пока не придумал, как от этого избавиться.
Согласен, лучше идти от простого к сложному. В теории, каждый case на выходе попадает в точку end (of case). Поэтому если в блоке case нет принудительного jmp, то exit не нужен. Если jmp есть и ведет на exit-блок, то нужно вставить Exit. Если не на exit-блок, то нужно вставить goto.
А еще end of case и exit-блок могут совпадать, тогда exit тоже не нужен.

crypto пишет:
Не понял про SynEdit, в чем сложности?

Я в том смысле, что вместо текущего listbox, synedit выглядел бы лучше. А сложность может быть, потому что он дельфовый. Хотя в билдер дельфовые компоненты должны нормально ставиться (из bpl).



Ранг: 0.0 (гость)
Активность: 0.250
Статус: Участник

Создано: 28 августа 2013 12:22
· Личное сообщение · #14

crypto пишет:
файл в студию

По первому багу не могу, а по второму, hello dword в атаче: Выбрать базу 2006, загрузить example, дождаться окончания и не закрывая программу снова загрузить example, падает на парсинге virtual method.

a772_28.08.2013_EXELAB.rU.tgz - example.rar



Ранг: 72.1 (постоянный), 30thx
Активность: 0.050
Статус: Участник

Создано: 28 августа 2013 13:07
· Личное сообщение · #15

Вот, Дельфи 2 "мега"-программа. IDR точка входа не нравится, а потом если все же загрузить вообще падает с ассертом

2713_28.08.2013_EXELAB.rU.tgz - D2_err.rar




Ранг: 748.2 (! !), 390thx
Активность: 0.370
Статус: Участник
bytecode!

Создано: 28 августа 2013 21:33 · Поправил: 4kusNick
· Личное сообщение · #16

Hellspawn пишет:
з.ы. пипец как не хватает подсветки синтаксиса...

Абсолютно согласен, для комфортного реверса иногда приходится копипастить туда, где он есть.

Не хватает поиска по конкретной форме. А лучше - по всем формам в проекте.
Не хватает вывода строк в код вьювере, когда к ним обращаются напрямую.

Veliant пишет:
в каких случаях вместо параметров вызова функции втыкаются смайлы '' ?

Похоже, это одно из тех самых ограничений?

Словил такое: Decompile->Try->If->If->.
при поптытке восстановить исходный код в процедуре _Unit59::TMN_Form.MN_StartProcess (висит на кнопке OK формы MN_Form)

и EAccessViolation. при аналогичных действиях в процедуре _Unit59::TMN_Form.AB_ButUserGuideClick той же формы (висит на кнопке Help)

в этом файле.

-----
Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.





Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 29 августа 2013 03:15
· Личное сообщение · #17

Множество разных сообщений .. в самом конце падение с двумя исключениями, файл в архиве, картинки не выкладываю сюда, их слишком много.

--> Link <--

-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube





Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 29 августа 2013 04:13
· Личное сообщение · #18

crypto завалили тебя совсем багрепортами)
EAccessViolation надо по любому думать как убрать, оно надоедает
4kusNick пишет:
Не хватает поиска по конкретной форме. А лучше - по всем формам в проекте.

по форме имхо изврат, визуально проще найти, по всем формам может и есть смысл, когда очень большой проект, но чаще их не так много, чтобы это напрягало
Hellspawn пишет:
не хватает подсветки синтаксиса...

если только в виде галочки где-нибудь, чтобы кликнул и раскрасилось
может и не помешало бы, но на данной стадии лучше поправить основные моменты, а "раскраской" заниматься когда всё будет гладко

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh




Ранг: 188.1 (ветеран), 419thx
Активность: 0.140
Статус: Участник

Создано: 29 августа 2013 09:09
· Личное сообщение · #19

Isaev
Такое впечатление, что многие программу в первый раз увидели До этого единицы присылали свои багрепорты.

EAccessViolation никак пока не уберется, потому что это сигнал, означающий, что где-то что-то упущено.

Поиск в форме есть (нужно открыть дерево формы и в popup-меню выбрать Find).

Переделывать окно Code пока не собираюсь, как ты правильно сказал, это сейчас не главное.
ЗЫ
Ознакомление с данной версией заканчивается 1 сентября, потом я некоторое время займусь исправлением обнаруженных багов, выложу исправленную версию и видимо до Нового Года обновлений не будет. Скорее всего, буду уходить со сцены.



Ранг: 0.0 (гость)
Активность: 0.250
Статус: Участник

Создано: 29 августа 2013 10:20 · Поправил: F_a_u_s_t
· Личное сообщение · #20

crypto пишет:
Такое впечатление, что многие программу в первый раз увидели

Пока не работала кнопка src пользовался IDA, потому и репортов не писал.
crypto пишет:
EAccessViolation никак пока не уберется

Тогда будет не юзабельно, дело в том, что ломается листинг, куча пустых процедур, либо мусор в листинге мало похожий на код аля архив в дизасме.
crypto пишет:
Скорее всего, буду уходить со сцены.

Все мы рано или поздно уйдем, но если исправить баги, то останется долгая память.
Ну и спасибо за паблик.




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 29 августа 2013 10:42
· Личное сообщение · #21

crypto пишет:
Скорее всего, буду уходить со сцены.

выкупают idr ?



Ранг: 188.1 (ветеран), 419thx
Активность: 0.140
Статус: Участник

Создано: 29 августа 2013 10:45
· Личное сообщение · #22

reversecode
С чего ты взял? Тут никакой корреляции нет, просто надоело...




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 29 августа 2013 10:58 · Поправил: reversecode
· Личное сообщение · #23

обычно когда надоедает, проекты(исходники) отдают на паблик
ну либо по приватам как здесь принятно



Ранг: 188.1 (ветеран), 419thx
Активность: 0.140
Статус: Участник

Создано: 29 августа 2013 14:17
· Личное сообщение · #24

F_a_u_s_t
Разобрался с твоей второй программой - баг исправлен.



Ранг: 188.1 (ветеран), 419thx
Активность: 0.140
Статус: Участник

Создано: 29 августа 2013 14:35 · Поправил: crypto
· Личное сообщение · #25

Почитайте мои рекомендации на сайте. Там написано: не пытайтесь декомпилировать системные процедуры, часть из них написана на ассемблере (в частности, InternalUniqueString), исходники этих процедур известны.
mak
Сообщения о стеке - это те самые ограничения версии. UnderConstruction - еще не подключены, это не баг, а незавершенность.
Точка входа разбирается нормально (есть ошибки, но они устраняемы):
Code:
  1. procedure sub_00597C18;
  2. begin
  3.   //00597C18
  4.   _eax_ := 0;
  5.   lvar_14 := _eax_;
  6.   lvar_18 := _eax_;
  7.   _eax_ := $595530{5854512};
  8.   try
  9.     //00597C45
  10.     lvar_18 := GetCurrentDir;
  11.     _eax_ := lvar_18
  12.     lvar_14 := FindStringResource(lvar_18{0});
  13.     _edx_ := lvar_14
  14.     gvar_005ADFE4 := lvar_14 + 'trace.txt';
  15.     _eax_ := 0;
  16.     sub_005605C8('');
  17.     SetLastError({0});
  18.     sub_00408174(False, False, '??????B\0');
  19.     _eax_ := GetLastError;
  20.     if (_eax_{GetLastError} <> $B7{183}) then
  21.     begin
  22.       //00597C96
  23.       gvar_005AE0C1 := 0;
  24.       gvar_005AE0C2 := 1;
  25.       _eax_ := Application;
  26.       Application.Initialize;
  27.       _eax_ := Application;
  28.       Application.SetTitle('Exйcution de programmes sous un compte administrateur');
  29.       _eax_ := sub_00565C64('h', gvar_005ADF78);
  30.       //00597CC9
  31.       _eax_ := sub_00565C64('?', gvar_005ADF78);
  32.       if (_eax_{sub_00565C64('h', gvar_005ADF78)<> False) Or (_eax_{sub_00565C64('?', gvar_005ADF78)<> False) then
  33.       begin
  34.         //00597CE1
  35.         gvar_005AE0C1 := 1;
  36.       end;
  37.       _eax_ := sub_00565C64('nosplash', gvar_005ADF7C);
  38.       if (_eax_{sub_00565C64('nosplash', gvar_005ADF7C)<> False) then
  39.       begin
  40.         //00597CFD
  41.         gvar_005AE0C2 := 0;
  42.       end;
  43.       if (gvar_005AE0C1 <> 0) then
  44.       begin
  45.         //00597D0F
  46.         gvar_005AE0C2 := 0;
  47.       end;
  48.       if (gvar_005AE0C2 <> 0) then
  49.       begin
  50.         //00597D21
  51.         _ecx_ := Application;
  52.         _edx_ := 1;
  53.         _eax_ := TSplashScreen.Create(Application);
  54.         gvar_005AE448 := _eax_;//TSplashScreen.Create(Application)
  55.         _eax_ := gvar_005AE448;
  56.         gvar_005AE448.Show;
  57.         _eax_ := gvar_005AE448;
  58.         gvar_005AE448.Update;
  59.         Sleep({$3E8{1000}});
  60.       end;
  61.       _eax_ := Application;
  62.       Application.CreateForm(TForm1, gvar_005AE470);
  63.       _eax_ := gvar_005AE470;
  64.       gvar_005AE470.Show;
  65.       _eax_ := gvar_005AE470;
  66.       gvar_005AE470.Update;
  67.       _eax_ := Application;
  68.       Application.CreateForm(TInfos, gvar_005AE100);
  69.       _eax_ := Application;
  70.       Application.CreateForm(TForm8, gvar_005AE408);
  71.       _eax_ := Application;
  72.       Application.CreateForm(TForm10, gvar_005AE444);
  73.       _eax_ := Application;
  74.       Application.CreateForm(TForm11, gvar_005AE104);
  75.       _eax_ := Application;
  76.       Application.CreateForm(TForm2, gvar_005AE428);
  77.       _eax_ := Application;
  78.       Application.CreateForm(TForm3, gvar_005AE44C);
  79.       _eax_ := Application;
  80.       Application.CreateForm(TForm7, gvar_005AE43C);
  81.       _eax_ := Application;
  82.       Application.CreateForm(TForm9, gvar_005AE154);
  83.       _eax_ := Application;
  84.       Application.CreateForm(TForm12, gvar_005AE440);
  85.       if (gvar_005AE0C2 <> 0) then
  86.       begin
  87.         //00597E3F
  88.         _eax_ := gvar_005AE448;
  89.         gvar_005AE448.Hide;
  90.         _eax_ := gvar_005AE448;
  91.         gvar_005AE448.Free;
  92.       end;
  93.       _eax_ := Application;
  94.       Application.Run;
  95.     end
  96.     else
  97.     begin
  98.       //00597E60
  99.       _eax_ := MessageBoxA(, 'SuperExec est dйjа actif!
  100. SuperExec is already running!', 'SuperExec', {$30{48}});
  101.     end;
  102.   finally
  103.     //00597E80
  104.     _edx_ := 2;
  105.   end;


| Сообщение посчитали полезным: mak


Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 29 августа 2013 15:00
· Личное сообщение · #26

crypto из пожеланий, навеяло, подключение стандартных констант

-----
[nice coder and reverser]




Ранг: 0.0 (гость)
Активность: 0.250
Статус: Участник

Создано: 29 августа 2013 15:06
· Личное сообщение · #27

crypto пишет:
Разобрался с твоей второй программой - баг исправлен.

Можешь выложить исправленную версию для дальнейших тестов?

| Сообщение посчитали полезным: DimitarSerg, =TS=

Ранг: 188.1 (ветеран), 419thx
Активность: 0.140
Статус: Участник

Создано: 29 августа 2013 15:07
· Личное сообщение · #28

Hellspawn
В базе знаний есть константы. Вот только нет данных о том, где они используются. Если такую инфу добавить, то вполне можно их извлекать. Кстати, из стандартных set данные берутся.




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 29 августа 2013 15:15
· Личное сообщение · #29

crypto как в иде? правая кнопка - наложить константу?

-----
[nice coder and reverser]




Ранг: 188.1 (ветеран), 419thx
Активность: 0.140
Статус: Участник

Создано: 29 августа 2013 16:23
· Личное сообщение · #30

Hellspawn
Я не знаю, как там это делается, но я имел в виду, что если в вызове используется аргумент типа enum или поле из set, которые находятся в базе знаний, то в вызов помещается символическое имя (например, если eax=1 и eax имеет тип TBrushStyle, то вместо него в вызов будет подставлено значение bsClear).




Ранг: 533.6 (!), 232thx
Активность: 0.450
Статус: Uploader
retired

Создано: 29 августа 2013 16:29
· Личное сообщение · #31

crypto пишет:
Я не знаю, как там это делается

Ищутся все константы с этим значением и выдается потом их список в диалоге, и пользователь выбирает какую применить.

-----
Лучше быть одиноким, но свободным © $me


| Сообщение посчитали полезным: crypto
<< 1 ... 18 . 19 . 20 . 21 . 22 . 23 . 24 . 25 . 26 . 27 . 28 ... 47 . 48 . >>
 eXeL@B —› Софт, инструменты —› Interactive Delphi Reconstructor (IDR). Миттельшпиль
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати