Сейчас на форуме: UniSoft, laslo, bartolomeo (+5 невидимых) |
eXeL@B —› Программирование —› Алгоритм асма на срр |
Посл.ответ | Сообщение |
|
Создано: 31 октября 2011 14:49 · Личное сообщение · #1 Доброго времени суток. Изучаю крэкми, и решил написать для одного из них кейген на срр. Данный алгоритм генерирует ключ, по введенному имени. 0040130E |. B3 1A MOV BL,1A 00401310 |> 803E 00 /CMP BYTE PTR DS:[ESI],0 00401313 |. 74 15 |JE SHORT Копия_54.0040132A 00401315 |. 8A06 |MOV AL,BYTE PTR DS:[ESI] 00401317 |. 02C1 |ADD AL,CL 00401319 |. 32C1 |XOR AL,CL 0040131B |. F6F3 |DIV BL 0040131D |. 66:C1E8 08 |SHR AX,8 00401321 |. 04 41 |ADD AL,41 00401323 |. 8807 |MOV BYTE PTR DS:[EDI],AL 00401325 |. 47 |INC EDI 00401326 |. 46 |INC ESI 00401327 |. 41 |INC ECX 00401328 |.^EB E6 \JMP SHORT Копия_54.00401310 написал код на срр int main() { int len; int x; std::string Str1; std::cin>>Str1; std::string Str2=Str1; len=Str1.length(); for(int i=0;i<len;i++) { x=Str1[i]; x+=i; x^=i; x/=26; x>>=8; x+=41; Str2[i]=x; } std::cout<<Str2; system("PAUSE"); return 0; } Однако возникла загвоздка в строке, где DIV, тк после деления на асме после этой команды в EAX в AL помещается целая часть, а в AH остаток от деления, а после этого все значение сдвигается на 8 бит. Как на срр можно реализовать такое действие? Заранее благодарен. |
|
Создано: 31 октября 2011 15:05 · Личное сообщение · #2 |
|
Создано: 31 октября 2011 19:37 · Личное сообщение · #3 |
|
Создано: 31 октября 2011 20:15 · Личное сообщение · #4 |
|
Создано: 01 ноября 2011 21:47 · Личное сообщение · #5 M0use пишет: Как на срр можно реализовать такое действие? А не проще в IDA с помощью Hex-Rays сгенерировать сишный код? | Сообщение посчитали полезным: Skino, DimitarSerg |
|
Создано: 03 ноября 2011 12:12 · Личное сообщение · #6 Fant0m's crackme #4. Узнаю, да. Так. Я уже совсем забыл Си. Надельфи это выглядит как: var i:integer; begin for i:=0 to length(name)-1 do begin name[i+1]:=chr((ord(name[i+1])+i xor i) mod $1A+$41); end; end; И ответ на твой вопрос: там через DIV вычисляется остаток от деления (mod в Паскале и % в Си). P.S. x+=41; //неверно. Там в хексе 41, т.е. 0x41 |
eXeL@B —› Программирование —› Алгоритм асма на срр |