Сейчас на форуме: ==DJ==[ZLO], Magister Yoda, Rio (+5 невидимых)

 eXeL@B —› Основной форум —› Помогите взломать прогу!
Посл.ответ Сообщение

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

Создано: 08 декабря 2004 11:09
· Личное сообщение · #1

Привет всем! Хочу сразу выразить благодарность -= ALEX =-'у за помощь и gost'у за манул по SEH!
Скажите плиз что делает movzx, а то у меня в книге по асму (какой-то самоучитель) про неё ничего не написано
И ещё, привожу из DeDe кусок кода(вычисление серийника) одной проги(точнее System Mechanic 4 Pro), чё-то я тут немного не догоняю
по адресу 004DC56E... здесь есть [ebp-$1C] это типа Result в Delphi а [ebx-$01] - х-ня какая-то...

...
004DC558 8B45FC mov eax, [ebp-$04] < eax := User Name

* Reference to: system.@LStrLen:Integer;
|
004DC55B E8307EF2FF call 00404390
004DC560 8BF0 mov esi, eax
004DC562 85F6 test esi, esi
004DC564 7E57 jle 004DC5BD
004DC566 BB01000000 mov ebx, $00000001
004DC56B 8B45FC mov eax, [ebp-$04]
004DC56E 8A4418FF mov al, byte ptr [eax+ebx-$01]
004DC572 3C46 cmp al, $46
004DC574 7622 jbe 004DC598
004DC576 8B45FC mov eax, [ebp-$04]
004DC579 0FB64418FF movzx eax, byte ptr [eax+ebx-$01]
004DC57E 8D143B lea edx, [ebx+edi]
004DC581 2BC2 sub eax, edx
004DC583 8D55E4 lea edx, [ebp-$1C]

* Reference to: sysutils.IntToStr(Integer):AnsiString;overload;
|
004DC586 E865F2F2FF call 0040B7F0
004DC58B 8B55E4 mov edx, [ebp-$1C]
...

Если надо, могу привести весь исходник функции или какие-то нуную часть, напр. с адреса 004DC5BD или 004DC598...



Ранг: 384.1 (мудрец)
Активность: 0.250
Статус: Участник
www.int3.net

Создано: 08 декабря 2004 11:26 · Поправил: nice
· Личное сообщение · #2

FuckMan
В данном случае это так:
берем байт, который лежит по адресу: [eax+ebx-$01]
и заносим его в EAX, стирая старшие разряды.

Если EAX=90A909CA
movzx eax, byte ptr [eax+ebx-$01] // byte ptr [eax+ebx-$01] -> 41
00000041
______ Всё это команда занулила

-----
Подписи - ЗЛО! Нужно убирать!




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

Создано: 08 декабря 2004 11:53
· Личное сообщение · #3

nice пишет:
берем байт, который лежит по адресу: [eax+ebx-$01]
и заносим его в EAX, стирая старшие разряды.


а как это реализовать в Delphi?




Ранг: 260.3 (наставник), 2thx
Активность: 0.120
Статус: Участник
PPC-PROTECT author

Создано: 08 декабря 2004 12:46
· Личное сообщение · #4

FuckMan если нужно взять какой-нить символ от строки, то работаешь со строкой как с массивом, к примеру:
var str:string;
s1:string
....
str:='FuckMan';
s1:=str[1];
---
после этого s1 будет содержать символ 'u'
если нужен ascii код сивола, то делаешь chr(str[1])

-----
Пиво, сиськи, транс




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

Создано: 08 декабря 2004 21:53
· Личное сообщение · #5

-= ALEX =-

Хы... я всегда фунцией Copy пользовался


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


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