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

 eXeL@B —› Вопросы новичков —› UbackPro v7 и его взбрыки
Посл.ответ Сообщение

Ранг: 1.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 26 апреля 2006 12:20
· Личное сообщение · #1

доброго времени суток!
у меня стоит такая проблема: есть у меня есть компонент
для делфи (http://torry.net/vcl/filedrv/backup/uback7demo.exe 505 кб)
он делает бекап файлов .... но у него маленький недостаток:
работает только при включеном IDE. крека на седьмую версию я нигде не нашол
пробовал взломать по указаниям(статья о взломе dcu файлов), но застопорился вот на чем:
я дизасемблирую его Васмом нахожу вызов функции FindWindowa
Но тут возникает вопрос что на что в Hex - редакторе надо поменять?
в статье написано что меняется 84С0 на 4040 и непонятно откуда это берется !!!

ассемблерный код:

* Reference To: user32.FindWindowA, Ord:0000h
|
:00455A1D E81A16FBFF Call 0040703C
:00455A22 8BD8 mov ebx, eax
:00455A24 6A00 push 00000000

* Possible StringData Ref from Data Obj ->"TPropertyInspector"
|
:00455A26 688C024700 push 0047028C

* Reference To: user32.FindWindowA, Ord:0000h
|
:00455A2B E80C16FBFF Call 0040703C
:00455A30 8BF0 mov esi, eax
:00455A32 6A00 push 00000000

* Possible StringData Ref from Data Obj ->"TAppBuilder"
|
:00455A34 68A0024700 push 004702A0

* Reference To: user32.FindWindowA, Ord:0000h
|
:00455A39 E8FE15FBFF Call 0040703C
:00455A3E 85DB test ebx, ebx
:00455A40 7408 je 00455A4A
:00455A42 85F6 test esi, esi
:00455A44 7404 je 00455A4A
:00455A46 85C0 test eax, eax
:00455A48 7505 jne 00455A4F

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00455A40(C), :00455A44(C)
|
:00455A4A 33C0 xor eax, eax
:00455A4C 5E pop esi
:00455A4D 5B pop ebx
:00455A4E C3 ret


т.е. если окно найдено - возвращается его хэндл, иначе - 0 в регистр eax
в коде наглядно показано что в функцию передаются адреса имен классов а результат возвращается в eax и потом сохраняется в esi, ebx
и проверка
> :00455A3E 85DB test ebx, ebx
> :00455A40 7408 je 00455A4A
> :00455A42 85F6 test esi, esi
> :00455A44 7404 je 00455A4A
> :00455A46 85C0 test eax, eax
> :00455A48 7505 jne 00455A4F
- Как я понял, что б обойти проверку надо обеспечить чтобы регистры eax,ebx,esi были не нулевые - проще всего это сделать, учитывая что они у вас равны или больше нуля после поиска окон - заменить 2-х байтовую команду test на два однобайтовых inc
Типа
inc ebx
inc ebx
> :00455A40 7408 je 00455A4A
Подскажите какие шестнадцатизначные значения в этом случае надо менять!



Ранг: 138.7 (ветеран), 135thx
Активность: 0.110
Статус: Участник

Создано: 26 апреля 2006 12:47
· Личное сообщение · #2

inc ebx - 43h
inc esi - 46h
inc eax - 40h
а не проще поменять :00455A40 7408 je 00455A4A
на :00455A40 EB0D jmp 00455A4F



Ранг: 1.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 26 апреля 2006 13:42
· Личное сообщение · #3

to crc1 - SENKS
тоесть как я понял в hex'e надо менять 7408 на EB0D!!!
екзешка пошла на ура .... все сработало
а если поменять это все в dcu эта проблема исчезнет навсегда????




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 26 апреля 2006 13:57
· Личное сообщение · #4

Ну да, ведь компилякается всё из dcu.

-----
Yann Tiersen best and do not fuck



 eXeL@B —› Вопросы новичков —› UbackPro v7 и его взбрыки
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати