Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
|
В смысле, ты декомпилер тестируешь? Ну выложи его в Сеть, потестим... 23.09.03 11:22 Число просмотров: 2659
Автор: HandleX <Александр М.> Статус: The Elderman
|
Или ты предлагаешь проги тебе присылать, ты будешь их декомпилить, и результаты отсылать обратно? :)
|
<job>
|
Decompiling (Software testing) 23.09.03 10:37
Автор: SL Статус: Незарегистрированный пользователь
|
Декомпиляция (пока бесплатная) программ, написанных на С. Цель - software testing. Пожелания - на crypto2001@mail.ru
|
|
Так держать! 24.09.03 22:56
Автор: Tlo Статус: Незарегистрированный пользователь
|
Правильной дорогой идете, товарищ.
Подобный output может очень сильно помогать в некоторых случаях, например, когда лень (или мало заплатили) реверсить генератор ключей, то подобное может быть полезно. Только в таком случае надо больший упор делать на слежение за переменными и аргумантами. А в пределе пытаться сворачивать if, for, switch и т.п.
Хотя продать Такое будет скорее всего мудрено... "Ильфак" (в кавычках, потому что он вообще-то не при больших делах) вон как извращается, а все равно имеют.
|
|
уж не Desquirr ли ты переточил ? 24.09.03 18:44
Автор: redp Статус: Незарегистрированный пользователь
|
что значит - инструмент интерактивен ? IDA вон тоже типа интерактивна, только щит выдает пока руки не приложишь
Опиши pls подробнее на основе чего сделано (ни в жысть не поверю что с полного нуля)
|
| |
Desquirr - вот его-то я и потестирую! 25.09.03 17:38
Автор: SL Статус: Незарегистрированный пользователь
|
Посмотрел я этот device. Что-то похожее я уже видел (кажется программа называлась dec, точно не помню). Выход очень похожий, но читать его просто ужасно.
Подход у обеих не очень правильный. Ну зачем писать свой дизассемблер, когда лучше IDA не найти. И зачем тупо декомпилировать весь код, в том числе startup, встроенные функции? У меня на вход дается ASM из IDA (м.б. даже уже обработанный, со своими названиями функций, переменных,...). Есть небольшие (несущественные ограничения). И можно из списка процедур выбирать те, которые требуется декомпилировать. (В том числе все). Декомпилирую - выложу исходники куда-нить
|
| |
Нет, это результат многолетних разборов программ. 24.09.03 20:31
Автор: SL Статус: Незарегистрированный пользователь
|
> что значит - инструмент интерактивен ? IDA вон тоже типа > интерактивна, только щит выдает пока руки не приложишь > Опиши pls подробнее на основе чего сделано (ни в жысть не > поверю что с полного нуля) Это значит, что в ситуации, когда нет однозначного решения, программа выдает возможные варианты, а юзер выбирает тот, который по его мнению наиболее подходит для данной ситуации. Пример
xor esi, esi
esi после этого может использоваться просто как константа 0, а может быть переменной цикла.
|
|
Попробуй этот: %windir%\explorer.exe, результат запости сюда Ж) 23.09.03 15:08
Автор: Killer{R} <Dmitry> Статус: Elderman Отредактировано 23.09.03 15:20 Количество правок: 2
|
Или хотябы winmine.exe. И вообще C всякие бывают. Код скомпиленный Visual'ом, Borland'ом, Intel'ом или GCC - четыре большие разницы, причем ни в одном из них ты не увидишь первоначальных имен функий и переменных. И что значит декомпилить? Твоя (или еще чьято) прога на основании некоторых шаблнов кода и вызовов функций и вызовов из общих runtime библиотек может восстановить их места вызовов и параметры. А если компилятор (вижуал или борланд какой) компилял с оптимизацией под пень, при которой инструкции через пень-колоду идут? Причем переменные в регистрах идут? + развертка циклов всяких? и это тока общеиспользуемые и очевидные фичи. Вобщем муть это...
|
| |
Фрагмент explorer.exe... 23.09.03 17:39
Автор: SL Статус: Незарегистрированный пользователь
|
Winmine - 16-битная, моя программа понимает только 32-битные
Explorer - не лучший пример, эти "программы" специально написаны так, чтобы существенно затруднить их reengineering. Тем не менее, вот тебе фрагмент. С переходами проблема, т.к. они вышли за scope рассматриваемого мною куска кода.
sub_403131
{
var_C = 0;
dword_415250 = 0;
dword_4151DC = sub_4021B2(0x43);
if (GetShellWindow() ? 0)
jnz short loc_403184
if (dword_4151DC ? 0)
jnz short loc_403184
if (SHRegGetUSValueA("Software\Microsoft\Windows\Internet Settings","AutoConfigURL",0,0,0,0,0,0) ? 0)
jz loc_40A6B0
loc_403184:
InitializeCriticalSection(&unk_4151A0);
sub_403436();
dword_415240 = arg_0;
RegCreateKeyA(0x80000001,"Software\Microsoft\Windows\CurrentVersion\Explorer",&dword_415258);
var_8 = sub_403455();
if (var_8 != 0)
{
ShellAboutW(0,0);
}
if (SHELL32_100(0x800000) ? 0)
jnz loc_40A6C0
var_4 = 4;
j_SHELL32_509(dword_415258,&aDesktopprocess,0,&var_10,&dword_415254,&var_4);
loc_4031FD:
if (var_8 ? 0)
jz loc_40A6CF
dword_4152B4 = GetTickCount();
sub_40354F(1);
SetProcessShutdownParameters(2,0);
PeekMessageA(&var_68,0,0x12,0x12,0);
dword_4151D8 = SHELL32_181(0,4);
SHELL32_660(1);
if (dword_4151D8 ? 0)
jz loc_40A727
sub_406408(1);
sub_4035A4();
var_4 = sub_40702A(0x80000002,"Software\Microsoft\Windows\CurrentVersion\RunOnce",3);
loc_403275:
sub_403630(1,1);
sub_403669(0,0);
if (dword_4151DC ? 0)
jnz loc_40A775
loc_40328F:
sub_403895(arg_0);
sub_40716C();
if (dword_4151DC == 0)
{
sub_4038EA();
}
if (var_C == 0)
{
sub_403924();
}
if (sub_40392D() ? 0)
jz loc_40A77F
loc_4032C0:
if (sub_403967() ? 0)
jnz loc_40A6FD
if (sub_40399A(arg_0) ? 0)
jz loc_40A6FD
sub_40716C();
if (dword_4151D8 ? 0)
jz short loc_403315
if (dword_4151DC ? 0)
jnz short loc_403315
$a = GetDesktopWindow(0x400,0,0);
SendMessageA($a);
if (var_4 ? 0)
jnz loc_40A796
loc_40330F:
sub_407841(0);
loc_403315:
sub_407910(arg_8,arg_C);
if (dword_415254 ? 0)
jnz loc_40A7C8
loc_40332C:
dword_4152B8 = GetTickCount();
if (dword_415000 != 0)
{
$j = GetForegroundWindow();
if ($j ? 0)
jz short loc_403363
GetWindowThreadProcessId($j,&arg_0);
if (arg_0 == GetCurrentProcessId())
{
$j = 0;
}
if ($j ? 0)
jnz short loc_40336F
loc_403363:
SetForegroundWindow(dword_415000);
}
loc_40336F:
sub_407947(dword_4152BC);
jmp loc_40A825
}
|
| | |
мдааа.... а может лучше все таки IDAшкой по старинке? 23.09.03 17:43
Автор: Killer{R} <Dmitry> Статус: Elderman
|
|
| | | |
мдааа.... а может лучше все таки IDAшкой по старинке? 23.09.03 18:22
Автор: SL Статус: Незарегистрированный пользователь
|
Если ты помнишь, до IDA были дизассемблеры, которые автоматически пытались дизассемблировать программы. Но этот процесс в ряде случаев приводил к плохим результатам. Были попытки сделать дизассемблеры более интеллектуальными, например, небезизвестный Sourcer (так что ли он назывался, уже и не помню) имел несколько опций для управления процессом. Однако это плохо помогало. Потом Ильфак закрыл проблему своим интерактивным дизассемблером - процесс на начальном этапе все-таки остался близким к автоматическому, зато юзер может улучшать результат сколь-угодно долго. И это самый правильный метод решения.
IDA не решает задачи декомпиляции, хотя в него можно было бы вложить кое-что... Да она и не нужна с точки зрения назначения. Декомпилировать в IDA можно, только очень занудно. Вот я и попробовал облегчить жизнь. Хотелось бы довести свою программу до какого-то логического конца, выжать из нее побольше. На большее пока не претендую.
|
| |
Я говорю о тестировании, а не о проблеме в целом... 23.09.03 16:46
Автор: SL Статус: Незарегистрированный пользователь
|
> Или хотябы winmine.exe. И вообще C всякие бывают. Код > скомпиленный Visual'ом, Borland'ом, Intel'ом или GCC - > четыре большие разницы, причем ни в одном из них ты не > увидишь первоначальных имен функий и переменных. И что > значит декомпилить? Твоя (или еще чьято) прога на основании > некоторых шаблнов кода и вызовов функций и вызовов из общих > runtime библиотек может восстановить их места вызовов и > параметры. А если компилятор (вижуал или борланд какой) > компилял с оптимизацией под пень, при которой инструкции > через пень-колоду идут? Причем переменные в регистрах идут? > + развертка циклов всяких? и это тока общеиспользуемые и > очевидные фичи. Вобщем муть это... Программа интерактивная, поэтому многие вопросы решает сам пользователь (когда ситуация многозначная), а программа существенно облегчает процесс. Например, здорово разбирает инструкции c Floating Point
|
| | |
Я говорю о тестировании, а не о проблеме в целом... 23.09.03 17:41
Автор: Killer{R} <Dmitry> Статус: Elderman
|
> Программа интерактивная, поэтому многие вопросы решает сам > пользователь (когда ситуация многозначная), а программа > существенно облегчает процесс. Например, здорово разбирает > инструкции c Floating Point ну так я жу сказал - winmine.exe можешь, или notepad.exe - он еще проще, но все это на С писано, а исходники у микрософта лежат Ж). А насчет интерактивности - так тут IDA рулит, хоть и не Сшнй код выдает, но имхо лучше нормальный асм чем С фиг знает какой.
|
|
В смысле, ты декомпилер тестируешь? Ну выложи его в Сеть, потестим... 23.09.03 11:22
Автор: HandleX <Александр М.> Статус: The Elderman
|
Или ты предлагаешь проги тебе присылать, ты будешь их декомпилить, и результаты отсылать обратно? :)
|
| |
Не против, если я его сам для начала в реале потестирую?... 23.09.03 14:30
Автор: SL Статус: Незарегистрированный пользователь
|
> Или ты предлагаешь проги тебе присылать, ты будешь их > декомпилить, и результаты отсылать обратно? :) Исполняемый файл + указание интервала адресов для декомпиляции (для начала не очень много, пож-ста)
|
| | |
Нет, только вопросов несколько (2 штуки)... 23.09.03 14:54
Автор: HandleX <Александр М.> Статус: The Elderman
|
> Исполняемый файл + указание интервала адресов для > декомпиляции (для начала не очень много, пож-ста)
1) Почему именно C, а не любой другой *.exe? В смысле, можно любой другой, но декомпилер выдаст C-подобный код?
2) Тебе адреса от Image Base или смещения в *.exe?
|
| | | |
2 штуки ответов... 23.09.03 16:37
Автор: SL Статус: Незарегистрированный пользователь
|
> 1) Почему именно C, а не любой другой *.exe? В смысле, > можно любой другой, но декомпилер выдаст C-подобный код? > Кстати, пока только 32-битные программы, с 16 битами под вопросом (исчезающая фича, хотя во многих смыслах интересная)
Ну не любой, конечно, сам понимаешь. Выдача действительно псевдо-С.
> 2) Тебе адреса от Image Base или смещения в *.exe? От ImageBase
|
|
|