- UID
- 242
注册时间2005-3-6
阅读权限40
最后登录1970-1-1
独步武林
 
该用户从未签到
|
发表于 2009-7-26 11:47:12
|
显示全部楼层
不是这样算的
00401C39 8BD8 mov ebx, eax ; 上面出来后 = 0x16 就 OK
00401C3B 59 pop ecx
00401C3C BE A0214600 mov esi, 004621A0 ; 失败 字符串
00401C41 mov eax, dword ptr [ebp+ebx*4-1C0]
就是上面这条代码出卖了结果 ebp = 12f5c8 + ebx( 如果是 0x16) * 4 - 1c0 = 12f460
看堆栈
0012F460 0046218C 修订版.0046218C 这个 46218c dword 内存数据是 B0 C8 BD A7 叭涧..
对应的解码 key 是 3 1 4 1
也就是成功的字符串
然后你调用
00401C5E . F3:A5 rep movs dword ptr es:[edi], dword ptr [esi] ; 由于上面 esi(失败)和 edi ( 我们注册码说了算)
00401C60 . 8BCA mov ecx, edx
00401C62 . 83E1 03 and ecx, 3
00401C65 . F3:A4 rep movs byte ptr es:[edi], byte ptr [esi]
上面的代码为 复制多了一份 成功的字符串
这样就为 MessageBox 添加了需要的内容 |
|