- UID
- 32212
注册时间2007-5-7
阅读权限10
最后登录1970-1-1
周游历练
该用户从未签到
|
我的问题是:他怎么知道在ASCII "0000000"这一行附近观察修改? 他怎么知道这一段是重启验证的代码段?
重启验证暴破之《中国跳棋大师Chinese Checkers Master 1.03》
------------------------------------------------------------------------
一、程序查无壳,Microsoft Visual C++ 6.0编写。
二、程序注册失败有提示,根据这个提示我们很快找到关键代码段。
+++++++++++++++++++++++++++++++++++++++++++
文本字符串参考位于 Chinese_:.text,项目 268
地址=004229B8
反汇编=push Chinese_.004971E4
文本字符串=ASCII "The registration code you entered in incorrect. Please try again."
+++++++++++++++++++++++++++++++++++++++++
『这里省略了一般的爆破』
但可是太早了!这个程序有重启验证~我晕~拍马屁拍到马脚上了。。。
看我的~OD中下断 d 536038 ,重新运行程序,程序中断在此~
004296B3 C605 38605300 01 mov byte ptr ds:[536038],1
004296BA BB DF900F00 mov ebx,0F90DF
兄弟们,是不是很熟悉呀~
004296B3 C605 38605300 01 mov byte ptr ds:[536038],1 ; mov byte ptr ds:[536038],0
004296BA BB DF900F00 mov ebx,0F90DF ; mov ebx,0
004296BF BF 20734900 mov edi,Chinese_.00497320 ; ASCII "0000000"
004296C4 83C9 FF or ecx,FFFFFFFF
004296C7 33C0 xor eax,eax
004296C9 8D5424 14 lea edx,dword ptr ss:[esp+14]
004296CD F2:AE repne scas byte ptr es:[edi]
004296CF F7D1 not ecx
004296D1 2BF9 sub edi,ecx
004296D3 8BC1 mov eax,ecx
004296D5 8BF7 mov esi,edi
004296D7 8BFA mov edi,edx
004296D9 8A95 14150000 mov dl,byte ptr ss:[ebp+1514]
004296DF C1E9 02 shr ecx,2
004296E2 F3:A5 rep movs dword ptr es:[edi],dword ptr ds:[esi]
004296E4 8BC8 mov ecx,eax
004296E6 8A85 18150000 mov al,byte ptr ss:[ebp+1518]
004296EC 83E1 03 and ecx,3
004296EF F3:A4 rep movs byte ptr es:[edi],byte ptr ds:[esi]
004296F1 8A8D 13150000 mov cl,byte ptr ss:[ebp+1513]
004296F7 884424 16 mov byte ptr ss:[esp+16],al
004296FB 8A85 1B150000 mov al,byte ptr ss:[ebp+151B]
00429701 80E9 14 sub cl,14
00429704 884C24 14 mov byte ptr ss:[esp+14],cl
00429708 8A8D 19150000 mov cl,byte ptr ss:[ebp+1519]
0042970E 885424 15 mov byte ptr ss:[esp+15],dl
00429712 8A95 1A150000 mov dl,byte ptr ss:[ebp+151A]
00429718 2C 15 sub al,15
0042971A 80E9 18 sub cl,18
0042971D 884424 19 mov byte ptr ss:[esp+19],al
00429721 884C24 17 mov byte ptr ss:[esp+17],cl
00429725 8A8D 1C150000 mov cl,byte ptr ss:[ebp+151C]
0042972B 885424 18 mov byte ptr ss:[esp+18],dl
0042972F 8A95 1D150000 mov dl,byte ptr ss:[ebp+151D]
00429735 8D4424 14 lea eax,dword ptr ss:[esp+14]
00429739 50 push eax
0042973A 884C24 1E mov byte ptr ss:[esp+1E],cl
0042973E 885424 1F mov byte ptr ss:[esp+1F],dl
00429742 E8 54A10000 call Chinese_.0043389B
00429747 83C4 04 add esp,4
0042974A 3BC3 cmp eax,ebx ; cmp eax,0
0042974C 75 07 jnz short Chinese_.00429755 ; NOP
0042974E C605 38605300 00 mov byte ptr ds:[536038],0
00429755 83C3 11 add ebx,11
00429758 81FB FF439100 cmp ebx,9143FF
0042975E ^ 0F8C 5BFFFFFF jl Chinese_.004296BF
00429764 803D 38605300 01 cmp byte ptr ds:[536038],1
0042976B 0F85 72050000 jnz Chinese_.00429CE3
看到了没有?有共有四种更改的方法,都是考虑到到标志位的~一次暴个够~
我的问题是:他怎么知道在ASCII "0000000"这一行附近观察修改? 他怎么知道这一段是重启验证的段?
[ 本帖最后由 王永波 于 2007-5-16 22:37 编辑 ] |
|