顶猫兄---我太菜
我的问题是:他怎么知道在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:,1
004296BA BB DF900F00 mov ebx,0F90DF
兄弟们,是不是很熟悉呀~
004296B3 C605 38605300 01 mov byte ptr ds:,1 ; mov byte ptr ds:,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:
004296CD F2:AE repne scas byte ptr es:
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:
004296DF C1E9 02 shr ecx,2
004296E2 F3:A5 rep movs dword ptr es:,dword ptr ds:
004296E4 8BC8 mov ecx,eax
004296E6 8A85 18150000 mov al,byte ptr ss:
004296EC 83E1 03 and ecx,3
004296EF F3:A4 rep movs byte ptr es:,byte ptr ds:
004296F1 8A8D 13150000 mov cl,byte ptr ss:
004296F7 884424 16 mov byte ptr ss:,al
004296FB 8A85 1B150000 mov al,byte ptr ss:
00429701 80E9 14 sub cl,14
00429704 884C24 14 mov byte ptr ss:,cl
00429708 8A8D 19150000 mov cl,byte ptr ss:
0042970E 885424 15 mov byte ptr ss:,dl
00429712 8A95 1A150000 mov dl,byte ptr ss:
00429718 2C 15 sub al,15
0042971A 80E9 18 sub cl,18
0042971D 884424 19 mov byte ptr ss:,al
00429721 884C24 17 mov byte ptr ss:,cl
00429725 8A8D 1C150000 mov cl,byte ptr ss:
0042972B 885424 18 mov byte ptr ss:,dl
0042972F 8A95 1D150000 mov dl,byte ptr ss:
00429735 8D4424 14 lea eax,dword ptr ss:
00429739 50 push eax
0042973A 884C24 1E mov byte ptr ss:,cl
0042973E 885424 1F mov byte ptr ss:,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:,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:,1
0042976B 0F85 72050000 jnz Chinese_.00429CE3
看到了没有?有共有四种更改的方法,都是考虑到到标志位的~一次暴个够~
我的问题是:他怎么知道在ASCII "0000000"这一行附近观察修改?他怎么知道这一段是重启验证的段?
[ 本帖最后由 王永波 于 2007-5-16 22:37 编辑 ] 回复一下,猫最近很忙,可能很少上线.
兄弟提问的应该是软件重启验证的问题, 我让兄弟思考一个问题: 软件验证时候的算法和重启时候验证KEY的算法是否是相同的?
思考了这个问题后,我想兄弟就应该明白了吧. 如果两处验证的算法不一样,那可就出乱子了,呵呵~
应该我们在第一次注册的时候已经看过算法流程 所以当重启时下断后:d 536038
我们发现断到的指令部分和我们软件注册时候的算法是相同的,所以就知道这里是重启验证的部分.
软件没有跟,只是看了下猫的文章 ,如果出错之处, 还望大家指正.
不知这样回复楼主懂我的意思了没?
歉意--猫兄
我太菜!重启后下什么断?
d 536038是什么是在断什么?
nisy就是nisy ^_^服了
听君一席话....哈哈 d 536038
查看 536038 中的数据 :)
步骤哪里错误?
od载入,写上“d 536038”,点回车,点运行,软件没有断下来啊,怎么回事,哪里出错了?谢谢解答菜鸟非常感激 应该是下硬件断点 d 536038 就是来到这个地址 然后和ESP定律下断方式一样 兄弟试一下~ 有问题再跟帖~~
回复 #6 Nisy 的帖子
看到了哈支持pyg 支持nisy非常感谢总坛主 pyg真好 为什么不尝试追下码?
建议
希望先学点基础,打好基础之后才能融会贯通,个人理解,不对的地方请指教! PYG就是初学者的天堂,老大都这么热心
页:
[1]
2