![]() |
eXeL@B —› Вопросы новичков —› Посоветуйте плиз |
Посл.ответ | Сообщение |
|
Создано: 04 июня 2009 17:16 · Поправил: xtiger22 · Личное сообщение · #1 Вот прога, которую необходимо сломать Написана на Delphi В окне регистрации, при нажатии кнопки Ок форма закрывается и срабатывает ф-ция CloseQuerry. Она, по идее и "проверяет правильность" имени и ключа. Правильно ли то, что здесь проверяется ключ? Или эта ф-ция просто выдирает данные, а проверяются они уже в Main'e? И еще вопрос, а в GetText может проверяться ключ и имя? Я в асм не силен, помогите плиз =) Вот код ф-ции CloseQuery, выданный DeDe'м 006FB848 push ebp 006FB849 mov ebp, esp 006FB84B push $00 006FB84D push $00 006FB84F push $00 006FB851 push $00 006FB853 push $00 006FB855 push $00 006FB857 push ebx 006FB858 push esi 006FB859 mov esi, ecx 006FB85B mov ebx, eax 006FB85D xor eax, eax 006FB85F push ebp * Possible String Reference to: 'й8„Рялл^[‹е]ГU‹мj' | 006FB860 push $006FB93F ***** TRY | 006FB865 push dword ptr fs:[eax] 006FB868 mov fs:[eax], esp * Reference to field TRegForm.ModalResult : TModalResult | 006FB86B cmp dword ptr [ebx+$024C], +$01 <--------- Проверяем чем закрыли (крестиком или кнопкой) 006FB872 jnz 006FB924 <--------- И если крестиком то идем просто на выход 006FB878 lea edx, [ebp-$04] <--------- В EDX адрес первого эл-та стека * Reference to control TRegForm.EName : TEdit | 006FB87B mov eax, [ebx+$02F8] <-------- в EAX указатель на EName (это поле ввода имени) * Reference to: Controls.TControl.GetText(TControl):TCaption; | 006FB881 call 0048276C <--------- Вызов GetText для EName (указатель на "имя" в первый эл-т стека) 006FB886 cmp dword ptr [ebp-$04], +$00 <--------- Сравниваем первый эл-т стека (в котором помещено ИМЯ) с 0 (выполнилась ли ф-ция GetText) 006FB88A jz 006FB8BB <--------- Если там 0, то идем на 006FB8BB 006FB88C lea edx, [ebp-$08] <--------- В EDX адрес второго эл-та стека * Reference to control TRegForm.EName : TEdit | 006FB88F mov eax, [ebx+$02F8] <--------- Опять в EAX указыватель на EName * Reference to: Controls.TControl.GetText(TControl):TCaption; | 006FB895 call 0048276C <--------- Вызов GetText (указатель на "Имя" во второй эл-т стека) 006FB89A mov eax, [ebp-$08] <--------- В EAX значение второго эл-та стека (указатель на имя) * Reference to: System.@LStrLen(String):Integer; | 006FB89D call 00404708 <--------- Вызов ф-ции определения длины(для EAX) (результат в EAX) 006FB8A2 cmp eax, +$03 <--------- Сравниваем EAX с 3 006FB8A5 jl 006FB8BB <--------- Если меньше, то идем на 006FB8BB 006FB8A7 lea edx, [ebp-$0C] <--------- В EDX адрес третьего эл-та стека * Reference to control TRegForm.EReg : TEdit | 006FB8AA mov eax, [ebx+$02FC] * Reference to: Controls.TControl.GetText(TControl):TCaption; | 006FB8B0 call 0048276C <--------- Вызов GetText (указатель на "Ключ" в третий эл-т стека) 006FB8B5 cmp dword ptr [ebp-$0C], +$00 <--------- Проверяем есть ли "ключ" в третьем эл-те 006FB8B9 jnz 006FB8BF <--------- Если да, то идем сюда 006FB8BF 006FB8BB xor eax, eax <--------- обнуляем EAX 006FB8BD jmp 006FB8C1 <--------- переходим на 006FB8C1 006FB8BF mov al, $01 <--------- в EAX заносим 1 006FB8C1 mov [esi], al <--------- в сегмент данных по адресу esi заносим 1 006FB8C3 lea edx, [ebp-$10] <--------- В EDX адрес четвертого эл-та стека * Reference to control TRegForm.EName : TEdit | 006FB8C6 mov eax, [ebx+$02F8] * Reference to: Controls.TControl.GetText(TControl):TCaption; | 006FB8CC call 0048276C <--------- Вызов GetText (указатель на "Имя" в 4й эл-т стека) 006FB8D1 cmp dword ptr [ebp-$10], +$00 <--------- Есть ли "Имя" в 4м эл-те стека 006FB8D5 jz 006FB8F2 <--------- Если нет, то идем на 006FB8F2 006FB8D7 lea edx, [ebp-$14] <--------- В EDX адрес пятого эл-та стека * Reference to control TRegForm.EName : TEdit | 006FB8DA mov eax, [ebx+$02F8] * Reference to: Controls.TControl.GetText(TControl):TCaption; | 006FB8E0 call 0048276C <--------- Вызов GetText (указатель на "Имя" в 5й эл-т стека) 006FB8E5 mov eax, [ebp-$14] <--------- В EAX значение пятого эл-та стека (указатель на имя) * Reference to: System.@LStrLen(String):Integer; | 006FB8E8 call 00404708 <--------- Вызов ф-ции определения длины (результат в EAX) 006FB8ED cmp eax, +$03 <--------- Сравниваем EAX с 3 006FB8F0 jnl 006FB902 <--------- Если больше, то идем на 006FB902 * Reference to control TRegForm.EName : TEdit | 006FB8F2 mov eax, [ebx+$02F8] 006FB8F8 mov edx, [eax] * Reference to method TEdit.SetFocus() | 006FB8FA call dword ptr [edx+$00C4] 006FB900 jmp 006FB924 006FB902 lea edx, [ebp-$18] <--------- В EDX адрес шестого эл-та стека * Reference to control TRegForm.EReg : TEdit | 006FB905 mov eax, [ebx+$02FC] * Reference to: Controls.TControl.GetText(TControl):TCaption; | 006FB90B call 0048276C <--------- Вызов GetText (указатель на "Ключ" в 6й эл-т стека) 006FB910 cmp dword ptr [ebp-$18], +$00 <--------- Проверяем не пусто ли в 6м 006FB914 jnz 006FB924 <--------- Если нет, то идем на 006FB924 * Reference to control TRegForm.EReg : TEdit | 006FB916 mov eax, [ebx+$02FC] 006FB91C mov edx, [eax] * Reference to method TEdit.SetFocus() | 006FB91E call dword ptr [edx+$00C4] 006FB924 xor eax, eax 006FB926 pop edx 006FB927 pop ecx 006FB928 pop ecx 006FB929 mov fs:[eax], edx ****** FINALLY | * Possible String Reference to: '^[‹е]ГU‹мj' | 006FB92C push $006FB946 006FB931 lea eax, [ebp-$18] <--------- в EAX указатель на 6й эл-т стека (там Ключ) 006FB934 mov edx, $00000006 <--------- в EDX заносим 6 * Reference to: System.@LStrArrayClr(void;void;Integer); | 006FB939 call 0040445C 006FB93E ret * Reference to: System.@HandleFinally; | 006FB93F jmp 00403D7C 006FB944 jmp 006FB931 ****** END | 006FB946 pop esi 006FB947 pop ebx 006FB948 mov esp, ebp 006FB94A pop ebp 006FB94B ret ![]() |
|
Создано: 05 июня 2009 02:53 · Поправил: SVLab · Личное сообщение · #2 |
|
Создано: 05 июня 2009 13:34 · Личное сообщение · #3 |
|
Создано: 05 июня 2009 18:09 · Личное сообщение · #4 |
![]() |
eXeL@B —› Вопросы новичков —› Посоветуйте плиз |
Эта тема закрыта. Ответы больше не принимаются. |