Сейчас на форуме: asfa, _MBK_, Rio (+7 невидимых)

 eXeL@B —› Вопросы новичков —› Delphi & asm
Посл.ответ Сообщение

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

Создано: 16 января 2009 18:44
· Личное сообщение · #1

Кто кодит на Delphi, плз, покажите мне мои ошибки.
Заранее спс

Var
S : String;
Buffer: array[0..10] of Char;
szName : String;
HW : HWND;
Serial : Integer;
begin
HW := GetDlgItem (Form1.Handle, Edit1.Handle);
GetDlgItemText (Form1.Handle, HW, Buffer, 30);

Asm
push offset Buffer
XOR EDX,EDX
XOR EBX,EBX
XOR ESI,ESI
@1 :
MOV DL,BYTE PTR DS:[Buffer+EBX]; //тут ошибка (не поправил)
ADD ESI,EDX;
INC EBX
DEC EAX
JNZ @1
IMUL EAX,ESI,7F39Fh
ADD EAX,20h
SAR EAX,1h
MOV Serial, EAX
Ret

end;
Edit2.Text := IntToStr (Serial);
End;




Ранг: 533.6 (!), 232thx
Активность: 0.450
Статус: Uploader
retired

Создано: 16 января 2009 19:11 · Поправил: borov
· Личное сообщение · #2

Khim пишет:
MOV DL,BYTE PTR DS:[Buffer+EBX]; //тут ошибка (не поправил)

там все нормально

Khim пишет:
RET

вот после этого она уходит в аут

с чего рипнул?

есть на чем проверить?
Name: BoRoV
Pass: 118815148

просто так, а вдруг

-----
Лучше быть одиноким, но свободным © $me




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

Создано: 16 января 2009 19:18 · Поправил: Khim
· Личное сообщение · #3

3я статья aleks22, про генерацию и рипанье кода,
опробываю тот же вариант, только в дельфи,
вот полностью код процедуры, но только нада поработать над ним, ошибки поискать

function wsprintf( lpOut: LPSTR; lpFmt: LPCTSTR; p: Pointer ): Integer; stdcall; external 'user32.dll' name 'wsprintfA';

procedure TForm1.Button1Click(Sender: TObject);
Var
S : String;
Buffer: array[0..10] of Char;
szName : String;
HW : HWND;
Serial : Integer;
szMessage: PChar;
begin
HW := GetDlgItem (Form1.Handle, Edit1.Handle);
GetDlgItemText (Form1.Handle, HW, Buffer, 30);

Asm
push offset Buffer
XOR EDX,EDX
XOR EBX,EBX
XOR ESI,ESI
@1 :
MOV DL,BYTE PTR DS:[Buffer+EBX];
ADD ESI,EDX;
INC EBX
DEC EAX
JNZ @1
IMUL EAX,ESI,7F39Fh
ADD EAX,20h
SAR EAX,1h
MOV Serial, EAX
Ret

end;
GetMem (szMessage, 256 );
wsprintf( szMessage, '%02i', Pointer(Serial));
MessageBox( 0, szMessage, эСообщение', MB_OK );
End;

____________-
Жизнь.ехе \?




Ранг: 355.4 (мудрец), 55thx
Активность: 0.320
Статус: Uploader
5KRT

Создано: 16 января 2009 19:37
· Личное сообщение · #4

1. Убери ret
2. Вызови FreeMem

-----
Gutta cavat lapidem. Feci, quod potui. Faciant meliora potentes




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

Создано: 16 января 2009 19:44
· Личное сообщение · #5

Да, пасиб, сраслось, рабочий код, буду учиться рипать дальше

мож кто встречал статьи по рипанью кода ассемблер -> Delphi?




Ранг: 533.6 (!), 232thx
Активность: 0.450
Статус: Uploader
retired

Создано: 16 января 2009 19:46 · Поправил: borov
· Личное сообщение · #6

да, я кажется был прав

procedure TForm1.Button1Click(Sender: TObject);
Var
szName : String;
i, Serial : Integer;

function sar(i: integer): integer;
asm
sar eax,1h
end;
begin
Serial := 0;
szName := Edit1.Text;
for i := 0 to length(szName) - 1 do
Serial := Serial + ord(szName[i + 1]);

Serial := Serial * $7f39f + $20;
Serial := sar(Serial);
Edit2.Text := IntToStr(Serial);
end;

вместо того чтобы учится рипать лучше учился разберать

-----
Лучше быть одиноким, но свободным © $me




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

Создано: 16 января 2009 19:51
· Личное сообщение · #7

аналог на Delphi собрать смогу, зная что процедура делает, вот асм не знаю =((, в дельфи есть хорошая возможность просмотреть изменение значений переменных, поэт разбираюсь, через рипанье=)




Ранг: 355.4 (мудрец), 55thx
Активность: 0.320
Статус: Uploader
5KRT

Создано: 16 января 2009 20:12 · Поправил: coderess
· Личное сообщение · #8

http://exelab.ru/art/?action=view&id=97

http://exelab.ru/art/?action=view&id=92

-----
Gutta cavat lapidem. Feci, quod potui. Faciant meliora potentes





Ранг: 533.6 (!), 232thx
Активность: 0.450
Статус: Uploader
retired

Создано: 16 января 2009 21:09
· Личное сообщение · #9

тогда еще почитай о особеностях асма в делфи

-----
Лучше быть одиноким, но свободным © $me





Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 16 января 2009 23:07 · Поправил: Isaev
· Личное сообщение · #10

Khim пишет:
Ret


вот почитай азы www.infomix.ru/lib/syntax/2878.htm
borov пишет:
вместо того чтобы учится рипать лучше учился разберать

Это точно... полезнее намного!

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh



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


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