![]() |
eXeL@B —› Вопросы новичков —› Помогите разобраться с прогой на Delphi |
Посл.ответ | Сообщение |
|
Создано: 14 декабря 2006 13:55 · Личное сообщение · #1 В общем есть тест, который написан на Delphi (компилятор Borland Delphi 4.0 - 5.0). При запуске теста выпадает форма, где и проходит тест. При детальном изучении программы были найдены еще 2 формы (типо администрирования). Теперь ищу способ, как-бы добраться к этим формам из главной формы. На второй форме была найдена кнопка, которая вызывает первую форму. Через Ollydbg был изменен адрес в функции вызова первой формы, на адрес третьей формы. Потом на главной форме было заNOPино все, что делает одна из кнопок и поставлен JMP на адрес кнопки на второй форме, которая вызывает третью форму. Но к сожалению ничего не получилось. Прога запускаеться без ошибок, но при нажатии на кнопку ничего не происходит. Так-же были найдены кнопки на главной форме, которые вызывают вторую и третью формы, но заводит в ступор то, что функции к кнопкам как-бы прикреплены, но самих кнопок нет.... никак не могу понять, что это такое. Кто может помогите со взломом этого теста. Я не прошу ломать, просто может кто-то сталкивался с такой проблемой - наставте на правильный путь. ![]() ![]() |
|
Создано: 14 декабря 2006 14:36 · Личное сообщение · #2 |
|
Создано: 14 декабря 2006 21:40 · Личное сообщение · #3 |
|
Создано: 15 декабря 2006 02:01 · Личное сообщение · #4 |
|
Создано: 15 декабря 2006 03:58 · Личное сообщение · #5 Вобщем нашол участок кода, которым можно зажифровать исходный (нормальный текст)... 004487BC 53 push ebx 004487BD 8BD8 mov ebx, eax 004487BF 68A3000000 push $000000A3 * Reference to pointer to GlobalVar_00451078 | 004487C4 8B15A0FD4400 mov edx, [$0044FDA0] 004487CA A1C4FD4400 mov eax, dword ptr [$0044FDC4] 004487CF B903000000 mov ecx, $00000003 * Reference to: Main.Proc_004497A0 | 004487D4 E8C70F0000 call 004497A0 * Possible String Reference to: 'CodeTest.txt' | 004487D9 BA04884400 mov edx, $00448804 * Possible String Reference to: 'Test.txt' | 004487DE B81C884400 mov eax, $0044881C * Reference to: Main.Proc_00449DB0 | 004487E3 E8C8150000 call 00449DB0 * Possible String Reference to: 'Файл закодовано' | 004487E8 BA30884400 mov edx, $00448830 * Reference to control TForm1.Label1 : TLabel | 004487ED 8B83E4020000 mov eax, [ebx+$02E4] * Reference to: controls.TControl.SetText(TControl;TCaption); | 004487F3 E8D0D4FDFF call 00425CC8 004487F8 5B pop ebx 004487F9 C3 ret Что бы запустить программу нормально, нужно прописать текущий каталог в ProtocolDir.txt И кое что поднопить, что б программа не завершалась. Если не ошибаюсь - то тут: 0044D462 /77 0A JA SHORT Test_Pas.0044D46E ----- -=истина где-то рядом=- ![]() |
|
Создано: 15 декабря 2006 04:38 · Личное сообщение · #6 |
|
Создано: 15 декабря 2006 23:08 · Личное сообщение · #7 Сначала я видел код процедур Button1Click, но самих кнопок ни в каком редакторе ресурсов не было. Вчера наконец-то понял, что нормальные процедуры нажатия на кнопки - procedure Button2Click(Sender: TObject);, а в моем случае - procedure Button1Click; тоисть это обычная процедура, просто с таким именем, что-бы нас запутать.... KingSise, в том-то и дело, что программы целиком нет, приходиться довольствоваться тем, что есть. Я знал, что в ProtocolDir.txt нужно писать какой-то каталог на своем компе, там потом будут сохраняться отчеты. Цель взлома сначала была - добраться до других форм. Теперь кнешно хочеться и текст расскодировать и результаты посмотреть. Ну хотя-бы задания расскодировать. ![]() |
|
Создано: 16 декабря 2006 02:28 · Личное сообщение · #8 c001z3rO, ты пост выше читал? Задания я уже расскодирывал. тут: 0044D462 измени на 9090 (nop) и читай задания.... c001z3rO пишет: Цель взлома сначала была - добраться до других форм - такое впечетление что код выризан из программы... В сомой программе 3 формы, 2 из которых я впор запустить не могу... Так что если цель только вопросы почитать - то задача выполнена. З.Ы. Приаттачил пропатченный файл, готовься в общем к экзаменам. ![]() ----- -=истина где-то рядом=- ![]() |
|
Создано: 16 декабря 2006 02:55 · Поправил: KingSise · Личное сообщение · #9 0044E674 TMainForm.Button1Click: 0044E674 A160FF4400 mov eax,[L0044FF60] 0044E679 8B00 mov eax,[eax] 0044E67B E80421FFFF call SUB_L00440784 0044E680 C3 retn Вот код первой кнопки, она открывает форму адменестрирования. Переназначь события и все будет ништяк. Я делел так: вместо события при нажатии на "регестрацыя", влипил джам на этот код. А вот код, который вызывает вторую форму: 0044E218 A13CFF4400 mov eax,[L0044FF3C] 0044E21D 8B00 mov eax,[eax] 0044E21F E86025FFFF call SUB_L00440784 0044E224 C3 retn Тоже самое, переназначаешь события и все ништяк: Первая формочка: ![]() Вторая: ![]() З.Ы. Странная программка, токое впечатления что в ней немного кода выризали. Вот например: 0044E214 TMainForm.Button8Click: 0044E214 C3 retn странно вобщем.... "протокол за выбором" - расскодирует закодированный тест, а "кодування" - закодирует обратно. ----- -=истина где-то рядом=- ![]() |
|
Создано: 16 декабря 2006 05:59 · Личное сообщение · #10 заNOPил это - 0044D462 /77 0A JA SHORT Test_Pas.0044D46E программа нормально работает. Вопросы россшифровываються. Спасибо. А вот мне для учебы интересно, как ты нашол, что нужно NOPить именно это? Пробовал делать джампы на 44E674 - ничего не получилось ![]() Как ты это сделал? Приаттач пропатченный файл, что-бы "регистрация" открывала первую форму, а я посморю... З.Ы. Екзамены сдал еще вчера - всё ОК. Теперь просто интересно самому, как этот тест работает. ![]() |
|
Создано: 16 декабря 2006 09:22 · Поправил: KingSise · Личное сообщение · #11 c001z3rO пишет: Как ты это сделал? Открыл в деде, посморел события.... Вобщем приаттачил, при нажатии на кнопку - откроется 1-я форма, только программа глючит немного, вобщем разберешься как сделать так, что б она расскадировала закодированные тесты. ![]() ----- -=истина где-то рядом=- ![]() |
|
Создано: 16 декабря 2006 14:30 · Личное сообщение · #12 Всё нормально. Открываеться первая форма. Сделал, что-бы открывалась вторая форма. Если меняю джамп в твоей проге, то все ОК. А если в начальной - то ничего не получаеться... Что ты еще изменял кроме NOP первых трьех строчек и джамп в первой строке в событии кнопки "регистрация" ? Кста, после того как заNOPил 0044D462 /77 0A JA SHORT Test_Pas.0044D46E, прога всё равно всё время работать не будет. Днем работает, а вот ночью опять вылетает. Там наверное идет какой-то контроль времени. Как ты узнал, что NOPить нужно именно 0044D462 /77 0A JA SHORT Test_Pas.0044D46E ? ![]() |
|
Создано: 16 декабря 2006 14:53 · Личное сообщение · #13 |
|
Создано: 16 декабря 2006 15:15 · Поправил: KingSise · Личное сообщение · #14 c001z3rO, все, программу я с компа удалил. Как препод формы вызывает - не знаю, но могу предположить, что ты не всю программу скопирывал, должно быть что-то еще. Или возможно у препода патч есть. c001z3rO пишет: . Там наверное идет какой-то контроль времени. Значит отслеживай: GetSystemTime, GetLocalTime, GetSystemTimeAsFileTime Я тебе уже и так точку опоры дал, дельше деде в руки и веред исследовать. Думал вопросов больше не будетю ----- -=истина где-то рядом=- ![]() |
|
Создано: 17 декабря 2006 06:31 · Личное сообщение · #15 Ты точку опоры то дал. Но мне просто хотелось-бы самому научиться и узнать почему нужно NOPить именно 0044D462. И я не понял, как ты сделал джамп. Тоисть я понял, но когда я делаю в исходной проге - то у мя форма не открываеться. А когда меняю джамп на другую форму в твоей - то всё отлично. Огромное спасибо! ![]() |
|
Создано: 17 декабря 2006 06:39 · Личное сообщение · #16 |
|
Создано: 17 декабря 2006 06:47 · Личное сообщение · #17 |
|
Создано: 17 декабря 2006 08:02 · Личное сообщение · #18 |
![]() |
eXeL@B —› Вопросы новичков —› Помогите разобраться с прогой на Delphi |