C++ и ассемблер
От: Аноним  
Дата: 21.01.03 11:25
Оценка:
Подскажите пожалуйста (т.к. я ещё не сталкивался с ассемблерными
вставками) как реализовать следующий код на C++. Здесь представлен
вызов функции генерации пароля одного крякмикса.

* Referenced by a CALL at Address:
|:00401236   
|
:004012F9 55                      push ebp
:004012FA 8BEC                    mov ebp, esp
:004012FC 56                      push esi
:004012FD 57                      push edi
:004012FE 8D3584304000            lea esi, dword ptr [00403084]
:00401304 8D3D84324000            lea edi, dword ptr [00403284]
:0040130A 33C0                    xor eax, eax
:0040130C 33C9                    xor ecx, ecx
:0040130E B31A                    mov bl, 1A

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00401328(U)
|
:00401310 803E00                  cmp byte ptr [esi], 00
:00401313 7415                    je 0040132A
:00401315 8A06                    mov al, byte ptr [esi]
:00401317 02C1                    add al, cl
:00401319 32C1                    xor al, cl
:0040131B F6F3                    div bl
:0040131D 66C1E808                shr ax, 08
:00401321 0441                    add al, 41
:00401323 8807                    mov byte ptr [edi], al
:00401325 47                      inc edi
:00401326 46                      inc esi
:00401327 41                      inc ecx
:00401328 EBE6                    jmp 00401310


21.01.03 15:17: Перенесено модератором из 'C/C++' — ПК
Re: C++ и ассемблер
От: cz Ниоткуда  
Дата: 21.01.03 13:58
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Подскажите пожалуйста (т.к. я ещё не сталкивался с ассемблерными

А>вставками) как реализовать следующий код на C++.
[code skipped]


//примерно так. byte - тип данных занимающий 1 байт:)
byte *someData=pasword;
byte *hashaddr=&hashplace;//место пишется хеш
int Sum;
byte cl=0;
while(*somedata!='\0'){
    byte al=(byte)(*someData);
    al+=cl;
    al^=cl;
    al=(byte)(al/0x1a>>8+0x41);
    *hash=al;
    hash++;cl++;someData++;
}
Re[2]: Моя ошибка
От: cz Ниоткуда  
Дата: 22.01.03 08:39
Оценка:
Извиняюсь...

cz>

cz>

cz>//примерно так. byte - тип данных занимающий 1 байт:)
//byte - предполагаю это unsigned short


cz>byte *someData=pasword;
cz>byte *hashaddr=&hashplace;//место пишется хеш
cz>int Sum;
cz>byte cl=0;
cz>while(*somedata!='\0'){
cz>    byte al=(byte)(*someData);
cz>    al+=cl;
cz>    al^=cl;                     //
cz>    al=(byte)(al/0x1a>>8+0x41);//

Здесь очень глупая ошибка... Стыдно...
Правильный вариант
    al=(byte)(al%0x1a+0x41);//


cz>    *hash=al;
cz>    hash++;cl++;someData++;
cz>}
cz>



P.S. где еще сохранились такии интересные ф-ции извращения над паролями?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.