菜鸟教程,教你看最简单的注册算法
5-Or-More! v2.0a 这是一个很好玩的小游戏(见附件60k),寓教与乐,来解开它的秘密!!!
运行游戏填入用户名:shitman 假注册码:87654321 ctrl+n 调出trw2000 下bpx hmemcpy, g
回到游戏界面,点确定,被拦下,清断点 bc * 回到游戏 pmodule
0167:0040605F FF154C144100 CALL `USER32!GetDlgItemTextA`
0167:00406065 6A10 PUSH BYTE +10
0167:00406067 8D4DF0 LEA ECX,[EBP-10]
0167:0040606A 51 PUSH ECX
0167:0040606B 6882000000 PUSH DWORD 82
0167:00406070 FF7508 PUSH DWORD [EBP+08]
按F10几下到此*****(1)
0167:00406073 FF154C144100 CALL `USER32!GetDlgItemTextA` *****(1)获取用户名
0167:00406079 8D4DB0 LEA ECX,[EBP-50]
0167:0040607C 51 PUSH ECX 下 D ECX=shitman
0167:0040607D FF1560134100 CALL `KERNEL32!lstrlenA` 获取用户名的长度
0167:00406083 85C0 TEST EAX,EAX
0167:00406085 0F8489000000 JZ NEAR 00406114 如EAX=0,说明用户名为空就跳去死了!我有用户名,所以不会跳去死^_^
0167:0040608B 8D45F0 LEA EAX,[EBP-10]
0167:0040608E 50 PUSH EAX 我输入的假注册码 D EAX=87654321
0167:0040608F FF1560134100 CALL `KERNEL32!lstrlenA`获取注册码长度
0167:00406095 85C0 TEST EAX,EAX
0167:00406097 747B JZ 00406114 不为空,不会跳去死,会往下走
0167:00406099 8D45F0 LEA EAX,[EBP-10]
0167:0040609C 50 PUSH EAX EAX里放着我的假码:87654321
0167:0040609D E84EFEFFFF CALL 00405EF0 ********(2)这里就是关键处了
0167:004060A2 83C404 ADD ESP,BYTE +04
0167:004060A5 85C0 TEST EAX,EAX
0167:004060A7 746B JZ 00406114 走到这里就会跳去死了,因为我输入的是不正确的注册码,在*****(2)的call 会验证我的87654321,肯定不通过,跳到下面去死了。所以要去******(2)中的CALL里看看,到目前我们都没看到正确注册码,说明注册码在这个CALL 里做文章。
0167:004060A9 8D45F0 LEA EAX,[EBP-10]
0167:004060AC 8D4DB0 LEA ECX,[EBP-50]
0167:004060AF 50 PUSH EAX
0167:004060B0 51 PUSH ECX
0167:004060B1 E87FFEFFFF CALL 00405F35
0167:004060B6 83C408 ADD ESP,BYTE +08
0167:004060B9 85C0 TEST EAX,EAX
0167:004060BB 7449 JZ 00406106
0167:004060BD 6A40 PUSH BYTE +40
0167:004060BF 68ACD34000 PUSH DWORD 0040D3AC
0167:004060C4 6864D94000 PUSH DWORD 0040D964
0167:004060C9 FF7508 PUSH DWORD [EBP+08]
0167:004060CC FF1538144100 CALL `USER32!MessageBoxA`
0167:004060D2 C705F0E940000100+MOV DWORD [0040E9F0],01
0167:004060DC A1C4E94000 MOV EAX,[0040E9C4]
0167:004060E1 50 PUSH EAX
0167:004060E2 E87DCFFFFF CALL 00403064
0167:004060E7 83C404 ADD ESP,BYTE +04
0167:004060EA A1A0FA4000 MOV EAX,[0040FAA0]
0167:004060EF 6A00 PUSH BYTE +00
0167:004060F1 68449C0000 PUSH DWORD 9C44
0167:004060F6 50 PUSH EAX
0167:004060F7 FF15B0144100 CALL `USER32!GetMenu`
0167:004060FD 50 PUSH EAX
0167:004060FE FF15B8144100 CALL `USER32!DeleteMenu`
0167:00406104 EB23 JMP SHORT 00406129
0167:00406106 6A30 PUSH BYTE +30
0167:00406108 68ACD34000 PUSH DWORD 0040D3AC
0167:0040610D 684CD94000 PUSH DWORD 0040D94C
0167:00406112 EB0C JMP SHORT 00406120
0167:00406114 6A30 PUSH BYTE +30 **************去死的
0167:00406116 68ACD34000 PUSH DWORD 0040D3AC
0167:0040611B 6834D94000 PUSH DWORD 0040D934 地方在这
0167:00406120 FF7508 PUSH DWORD [EBP+08]
0167:00406123 FF1538144100 CALL `USER32!MessageBoxA`**********出错的对话框
算法段
0167:0040609D E84EFEFFFF CALL 00405EF0 ********(2)按F8跟进上面的这个关键对比call里
来到以下代码段:
0167:00405EF0 8B442404 MOV EAX,[ESP+04] 将87654321假码所在地址给EAX
0167:00405EF4 85C0 TEST EAX,EAX
0167:00405EF6 743A JZ 00405F32 测试EAX不为0,不会去死。
以下是比较注册码过程(最最简单的非明码比较)如果不看这里,你是无法得到正确的注册码!!!!!
0167:00405EF8 803831 CMP BYTE [EAX],31 比较第一位注册码是否是31即 1
0167:00405EFB 7535 JNZ 00405F32 到这里就不要往下按F10了,否则你去死了
0167:00405EFD 80780136 CMP BYTE [EAX+01],36 比较第二位注册码是否是36即 6
0167:00405F01 752F JNZ 00405F32
0167:00405F03 80780231 CMP BYTE [EAX+02],31 1
0167:00405F07 7529 JNZ 00405F32
0167:00405F09 80780333 CMP BYTE [EAX+03],33 3
0167:00405F0D 7523 JNZ 00405F32
0167:00405F0F 80780435 CMP BYTE [EAX+04],35 5
0167:00405F13 751D JNZ 00405F32
0167:00405F15 80780535 CMP BYTE [EAX+05],35 5
0167:00405F19 7517 JNZ 00405F32
0167:00405F1B 80780631 CMP BYTE [EAX+06],31 1
0167:00405F1F 7511 JNZ 00405F32
0167:00405F21 80780730 CMP BYTE [EAX+07],30 0
0167:00405F25 750B JNZ 00405F32
0167:00405F27 80780800 CMP BYTE [EAX+08],00 第九位没了就完成任务
0167:00405F2B B801000000 MOV EAX,01 置EAX=1
0167:00405F30 7402 JZ 00405F34 跳到返回ret成功了!!!!!
0167:00405F32 33C0 XOR EAX,EAX *******EAX=0上面的任意一个jnz 跳到这,你就完蛋
0167:00405F34 c3 Ret
考,注册信息不在注册表里,而在windows/5ormore.ini 里,我在注册表里找了半天。
[Settings]
Options=03C223C2430303C2630303C21313
MoreOptions=73C203C203C203
SN=1363133353531303
Name=5D5C1D9ABC9C
Time=64279602A457C6021323021313A33313A313130223030323A0
来看看sn 注册码的格式吧:从后往前 30 31 35 35 33 31 36 31 这是在跟踪时
的对比码16进制的,对应的字符为:01553161,既是注册码的反向16135510。
注册名:name 对应的是十六进制码 把这些信息删除,就成未注册版了^_^^_^。
总结:跟用户名无关,固定的注册码:16135510
这是本人第一次写教程,很菜,不过写这点东西也把我累坏了,恳请高手指教。
相关视频
相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么
热门文章 去除winrar注册框方法
最新文章
比特币病毒怎么破解 比去除winrar注册框方法
华为无线路由器HG522-C破解教程(附超级密码JEB格式文件京东电子书下载和阅读限制破解教UltraISO注册码全集(最新)通过Access破解MSSQL获得数据
人气排行 华为无线路由器HG522-C破解教程(附超级密码JEB格式文件京东电子书下载和阅读限制破解教UltraISO注册码全集(最新)qq相册密码破解方法去除winrar注册框方法(适应任何版本)怎么用手机破解收费游戏华为无线猫HG522破解如何给软件脱壳基础教程
查看所有0条评论>>