本帖最后由 lkou 于 2010-10-20 20:57 编辑
某人让我看是不是假的
使用帐号 asdjkl 密码 123456 就可以登陆
OD跑起后,查找字符串 您没有输入正确的Key,请联系客服进行购买
00402A45 /. 55 PUSH EBP 在这里下断点
00402A46 |. 8BEC MOV EBP,ESP
00402A48 |. 68 01030080 PUSH 80000301
00402A4D |. 6A 00 PUSH 0
00402A4F |. 68 D0070000 PUSH 7D0
00402A54 |. 68 01000000 PUSH 1
00402A59 |. BB F0394000 MOV EBX,跑跑王者.004039F0
00402A5E |. E8 F1000000 CALL 跑跑王者.00402B54 ;
00402A63 |. 83C4 10 ADD ESP,10
00402A66 |. 68 04000080 PUSH 80000004
00402A6B |. 6A 00 PUSH 0
00402A6D |. 68 E4154700 PUSH 跑跑王者.004715E4 ; Key输入错误
00402A72 |. 68 01030080 PUSH 80000301
00402A77 |. 6A 00 PUSH 0
00402A79 |. 68 00000000 PUSH 0
00402A7E |. 68 04000080 PUSH 80000004
00402A83 |. 6A 00 PUSH 0
00402A85 |. 68 F0154700 PUSH 跑跑王者.004715F0 ; 您没有输入正确的Key,请联系客服进行购买
00402A8A |. 68 03000000 PUSH 3
00402A8F |. BB E0354000 MOV EBX,跑跑王者.004035E0
00402A94 |. E8 BB000000 CALL 跑跑王者.00402B54
00402A99 |. 83C4 28 ADD ESP,28
00402A9C |. 8BE5 MOV ESP,EBP
00402A9E |. 5D POP EBP
00402A9F \. C3 RETN
key随便输,确定后OD会断下来,返回到调用地址后没有可用信息
所以直接单步走,进入这个区段的第一个call
00402A5E |. E8 F1000000 CALL 跑跑王者.00402B54
00420120 . 8D4424 08 LEA EAX,DWORD PTR SS:[ESP+8] ; EAX=0x13EE58
00420124 . 83EC 0C SUB ESP,0C ; 在栈中增加空间,大小为0C字节(如EAX为双字,4字节)
00420127 . 50 PUSH EAX ; 0x13EE58进栈
00420128 . FF7424 14 PUSH DWORD PTR SS:[ESP+14] ; 0x1进栈 //SS段[13EE54]
0042012C . 33C0 XOR EAX,EAX ; EAX=0,CF=0 //自身xor运算结果为0,CF=0
0042012E . 894424 08 MOV DWORD PTR SS:[ESP+8],EAX ; SS段[13EE44]=0x0
00420132 . 894424 0C MOV DWORD PTR SS:[ESP+C],EAX ; SS段[13EE48]=0x0
00420136 . 894424 10 MOV DWORD PTR SS:[ESP+10],EAX ; SS段[13EE4C]=0x0
0042013A . 8D5424 08 LEA EDX,DWORD PTR SS:[ESP+8] ; EDX=0x13EE44
0042013E . 52 PUSH EDX ; 0x13EE44进栈
0042013F . FFD3 CALL EBX ; 程序内部调用函数 4039F0 又call到这里面去了,要进去看看
00420141 . 8B4424 0C MOV EAX,DWORD PTR SS:[ESP+C]
00420145 . 8B5424 10 MOV EDX,DWORD PTR SS:[ESP+10]
00420149 . 8B4C24 14 MOV ECX,DWORD PTR SS:[ESP+14]
0042014D . 83C4 18 ADD ESP,18
00420150 . C3 RETN
004039F0 . 8B4424 0C MOV EAX,DWORD PTR SS:[ESP+C] ; EAX=0x13EE58 //SS段[13EE40]
004039F4 . 33C9 XOR ECX,ECX ; ECX=0,CF=0 //自身xor运算结果为0,CF=0
004039F6 . 8B00 MOV EAX,DWORD PTR DS:[EAX] ; EAX=0x7D0 //DS段[13EE58]
004039F8 . 85C0 TEST EAX,EAX ; ZF=0 //0x7D0&0x7D0=0x7D0
004039FA . 0F9CC1 SETL CL ; CL=0 //SF<>OF时结果为1
004039FD . 49 DEC ECX ; ECX=(0x0)-- //减1
004039FE . 23C1 AND EAX,ECX ; EAX=0x7D0 //7D0的十进制就是2000
0403A00 . 50 PUSH EAX ; /0x7D0进栈
00403A01 . FF15 B4F24600 CALL DWORD PTR DS:[<&KERNEL32.Sleep>] ; \Sleep
00403A07 . C3 RETN Sleep是按照毫秒计算,上面的2000就是2秒,之后就返回了
结果这个call
00402A5E |. E8 F1000000 CALL 跑跑王者.00402B54
只是让程序沉寂2秒,让用户以为程序在进行复杂的KEY运算,然后返回错误的KEY的提示,呵呵
附上程序,和软件官网下载的所谓key生成器,这个也是假的,有兴趣的可以自己弄弄看 |