刑法解释的理由和种类:请教软件破解达人一些软件破解中的代码问题

来源:百度文库 编辑:神马品牌网 时间:2024/04/28 17:48:32
代码如下(来自看雪论坛 原贴地址 http://bbs.pediy.com/showthread.php?s=&threadid=21308 )

00403B2C /$ 53 PUSH EBX
00403B2D |. 56 PUSH ESI
00403B2E |. 57 PUSH EDI
00403B2F |. 89C6 MOV ESI,EAX ; 把EAX内我们输入的用户名送到 ESI
00403B31 |. 89D7 MOV EDI,EDX ; 把EDX内的数据“Registered User”送到EDI
00403B33 |. 39D0 CMP EAX,EDX ; 用“Registered User”和我们输入的用户名作比较
00403B35 |. 0F84 8F000000 JE CrackMe3.00403BCA ; 相同则跳
00403B3B |. 85F6 TEST ESI,ESI ; 看看ESI中是否有数据,主要是看看我们有没有输入用户名
00403B3D |. 74 68 JE SHORT CrackMe3.00403BA7 ; 用户名为空则跳
00403B3F |. 85FF TEST EDI,EDI
00403B41 |. 74 6B JE SHORT CrackMe3.00403BAE
00403B43 |. 8B46 FC MOV EAX,DWORD PTR DS:[ESI-4] ; 用户名长度送EAX
00403B46 |. 8B57 FC MOV EDX,DWORD PTR DS:[EDI-4] ; “Registered User”字串的长度送EDX
00403B49 |. 29D0 SUB EAX,EDX ; 把用户名长度和“Registered User”字串长度相减
00403B4B |. 77 02 JA SHORT CrackMe3.00403B4F ; 用户名长度大于“Registered User”长度则跳
00403B4D |. 01C2 ADD EDX,EAX ; 把减后值与“Registered User”长度相加,即用户名长度
00403B4F |> 52 PUSH EDX
00403B50 |. C1EA 02 SHR EDX,2 ; 用户名长度值右移2位,这里相当于长度除以4
00403B53 |. 74 26 JE SHORT CrackMe3.00403B7B ; 上面的指令及这条指令就是判断用户名长度最少不能低于4
00403B55 |> 8B0E MOV ECX,DWORD PTR DS:[ESI] ; 把我们输入的用户名送到ECX
00403B57 |. 8B1F MOV EBX,DWORD PTR DS:[EDI] ; 把“Registered User”送到EBX
00403B59 |. 39D9 CMP ECX,EBX ; 比较
00403B5B |. 75 58 JNZ SHORT CrackMe3.00403BB5 ; 不等则完蛋

以上代码中间这一句:
00403B43 |. 8B46 FC MOV EAX,DWORD PTR DS:[ESI-4] ; 用户名长度送EAX
我不明白为什么DWORD PTR DS:[ESI-4] 的内容会是用户名长度 ?DS:不是指数据段吗 ,我对这句的理解是先把 esi内容减4 然后 把数据段中以这个减的结果作为偏移地址的地址中的内容送至EAX 不知这样理解对不对? 还有 后面的这句
00403B55 |> 8B0E MOV ECX,DWORD PTR DS:[ESI] ; 把我们输入的用户名送到ECX
我不明白为什么DWORD PTR DS:[ESI] 的内容会是用户名 ?
疑问很多 希望版主以及各位高手不吝赐教 感激不尽
原贴地址 http://bbs.pediy.com/showthread.php?s=&threadid=21308 这段内容在帖子的中后部

你的理解是正确的,但是你不注意全局.大部分的软件是不让你破解的.采用了各种加密的手段.这一种是垃圾指令的加密.换句话来说,你的这一段内容是一些垃圾,它只像模像样的程序.能顺利地通过加汇编就可以了,没有多大的意义,就是起干扰你的作用.

如果你注意了以上的两句,就不应该再对它的程序有问题了.

TEST ESI,ESI
JE LABLE
它的不跳转的可能吗?

TEST EDI,EDI
JE LABLE
它也有不跳转的可能吗?

你的程序你确信跳回来了吗?
呵呵,看看全局的调用吧!不要作无用功.