160CrackMe~002

test:将两个操作数进行按位AND,设结果是TEMP,若TEMP为0则ZF为1,否则,ZF为0

cmp oprd1,oprd2:将第一个操作数减去第二个操作数

PS:

在函数内部呢,一般[ebp+8]是第一个参数,[ebp+C]是第二个参数,每次多加4依此类推。而函数内部的局部变量常用[ebp-4][ebp-8]...等等。(原因讲起来有点复杂,先记住就行了)函数的返回值在EAX里。

一  

  首先在OD中利用中文搜索找到报错字符串,在整个函数的入口处F2下断点(push ebp),之后按F9运行,键入

点击ok,OD停在了入口处,按F8进行单步调试,发现密钥产生代码

 1 0040240F   .  8B45 E4       mov eax,dword ptr ss:[ebp-0x1C]          ;  eax='vincebye'
 2 00402412   .  50            push eax                                 ; /String = NULL
 3 00402413   .  8B1A          mov ebx,dword ptr ds:[edx]               ; |
 4 00402415   .  FF15 E4404000 call dword ptr ds:[<&MSVBVM50.__vbaLenBs>; \__vbaLenBstr
 5 0040241B   .  8BF8          mov edi,eax
 6 0040241D   .  8B4D E8       mov ecx,dword ptr ss:[ebp-0x18]
 7 00402420   .  69FF FB7C0100 imul edi,edi,0x17CFB                     ;  edi=edi*0x17CFB
 8 00402426   .  51            push ecx                                 ; /String = 37C6F27C ???
 9 00402427   .  0F80 91020000 jo Afkayas_.004026BE                     ; |
10 0040242D   .  FF15 F8404000 call dword ptr ds:[<&MSVBVM50.#rtcAnsiVa>; \rtcAnsiValueBstr
11 00402433   .  0FBFD0        movsx edx,ax
12 00402436   .  03FA          add edi,edx                              ;  edi=edi+edx
13 00402438   .  0F80 80020000 jo Afkayas_.004026BE
14 0040243E   .  57            push edi
15 0040243F   .  FF15 E0404000 call dword ptr ds:[<&MSVBVM50.__vbaStrI4>;  MSVBVM50.__vbaStrI4
16 00402445   .  8BD0          mov edx,eax                              ;  可能为密钥?

PS:

_vbaLenBs:计算字符串长度

rtcAnsiValueBstr:计算字符串ASCII值

_vbaStrI4:转化为长整型数值

算法:计算name的长度*0x17CFB+name第一个字符串的ASCII值,再转化为10进制数值,再最后在数值前面加上AKA-

 注册机:

  

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<iostream>
 4 using namespace std;
 5 int main()
 6 {
 7     printf("name:");
 8     char name[100];
 9     scanf("%s", name);
10     int first_value;
11     int length;
12     int  value;
13     length = strlen(name);
14     first_value = name[0];
15     value = length * 0x17CFB + first_value;
16     cout << "Code:"<<"AKA-"<<value << endl;
17     system("pause");
18 }

 

posted @ 2017-05-15 16:40  v1ce0ye  阅读(324)  评论(0编辑  收藏  举报