Подскажите пожалуйста (т.к. я ещё не сталкивался с ассемблерными
вставками) как реализовать следующий код на 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++' — ПК
Здравствуйте, Аноним, Вы писали:
А>Подскажите пожалуйста (т.к. я ещё не сталкивался с ассемблерными
А>вставками) как реализовать следующий код на 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++;
}
Извиняюсь...
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. где еще сохранились такии интересные ф-ции извращения над паролями?