一个超级简单的cm 简略分析
本帖最后由 rain灿 于 2014-10-5 20:25 编辑题外话-咱们论坛表情真是酷毙了。。。。
今天要说的是一个cm的简单爆破及分析。
首先。。cm地址 链接: http://pan.baidu.com/s/1i388dHb 密码: wiht (转的52)
要做的任务有:
1、爆破
2、伪造一个key 上传截图
3、分析注册码的流程。
首先先来尝试一下爆破。
先来看看这个cm长啥样子。。
一开始的启动窗口
这搓样我也是醉了。。。
然后主窗口
、
右下角还有个逆向按钮。。。。
(好像过于详细了。。 那下面就简略点了。。)
然后载入od!
按照恒大教我们的。
右键-中文搜索引擎-搜索ASCII。
查找"注册”
然后在每个段首下断。
最后爆破完应该是这三个修改地方
00402503je 00402544→jmp short 00402544
004029EB jnz 00402A30 →jmp short 00402A30
00402EDD je 00402FB5→nop
爆破不爱多说。
下面开始伪造一个key。
这是断FF55FC5F5E(易语言按钮事件特征码)的效果。。。
启动窗口的事件 发现没用。
然后运行。然后发现又断下了
在进去看下。
.....
00402983 8945 F8 mov dword ptr ss:,eax
00402986 68 17F34A00 push 004AF317 ; \授权文件.key
0040298B FF75 F8 push dword ptr ss:
0040298E B9 02000000 mov ecx,2
00402993 E8 C2FEFFFF call 0040285A ; 连接字符串。。。取运行目录()+"\授权文件.key"
00402998 83C4 08 add esp,8
0040299B 8945 F4 mov dword ptr ss:,eax
0040299E 8B5D F8 mov ebx,dword ptr ss:
....
004029BA 75 05 jnz short 004029C1
004029BC B8 B2984900 mov eax,004998B2 ; ā
004029C1 50 push eax
004029C2 68 01000000 push 1
004029C7 BB F0834000 mov ebx,004083F0
004029CC E8 214E0000 call 004077F2 ; 判断授权文件.key是否存在。不存在返回0 存在返回1
004029D1 83C4 10 add esp,10
004029D4 8945 F0 mov dword ptr ss:,eax
004029D7 8B5D F4 mov ebx,dword ptr ss:
004029DA 85DB test ebx,ebx
004029DC 74 09 je short 004029E7
004029DE 53 push ebx
004029DF E8 FC4D0000 call 004077E0
004029E4 83C4 04 add esp,4
004029E7 837D F0 00 cmp dword ptr ss:,0 ; 返回的值和0比较
004029EB 0F85 3F000000 jnz 00402A30
004029F1 6A 00 push 0
004029F3 68 25F34A00 push 004AF325 ; 免费用户
004029F8 6A FF push -1
004029FA 6A 08 push 8
....
00402A73 68 04000080 push 80000004 ; (下面才是重点,很多人不会伪造key里面的内容。)
00402A78 6A 00 push 0
00402A7A 68 2EF34A00 push 004AF32E ; 注册码(节名称)
00402A7F 68 04000080 push 80000004
00402A84 6A 00 push 0
00402A86 68 35F34A00 push 004AF335 ; 信息(配置项的名字)
00402A8B 68 04000080 push 80000004
00402A90 6A 00 push 0
00402A92 8B45 F4 mov eax,dword ptr ss:
.....
00402B26 74 09 je short 00402B31
00402B28 53 push ebx
00402B29 E8 B24C0000 call 004077E0
00402B2E 83C4 04 add esp,4
00402B31 DD45 F0 fld qword ptr ss: ; 把机器码112833956压入堆栈
00402B34 DC0D 3AF34A00 fmul qword ptr ds: ; 在乘上465
00402B3A DD5D E8 fstp qword ptr ss:
00402B3D DD45 E8 fld qword ptr ss:
00402B40 E8 4DECFFFF call 00401792 ; 得928181988 十六进制是3752EEE4
00402B45 68 01030080 push 80000301
00402B4A 6A 00 push 0
00402B4C 50 push eax
00402B4D 68 01000000 push 1
00402B52 BB C0834000 mov ebx,004083C0
00402B57 E8 964C0000 call 004077F2
00402B5C 83C4 10 add esp,10
00402B5F 8945 E4 mov dword ptr ss:,eax
00402B62 68 01030080 push 80000301
00402B67 6A 00 push 0
00402B69 68 05000000 push 5 (这个5 就是取的位数)
00402B6E 68 04000080 push 80000004
00402B73 6A 00 push 0
00402B75 8B45 E4 mov eax,dword ptr ss:
00402B78 85C0 test eax,eax
00402B7A 75 05 jnz short 00402B81
00402B7C B8 B2984900 mov eax,004998B2 ; ā
00402B81 50 push eax
00402B82 68 02000000 push 2
00402B87 BB 007D4000 mov ebx,00407D00
00402B8C E8 614C0000 call 004077F2 ; 取后5位是2EEE4
00402B91 83C4 1C add esp,1C ; 下面的算法是重复的。。就是- ÷ ×
00402B94 8945 E0 mov dword ptr ss:,eax
....
00402BFC DD45 D4 fld qword ptr ss:
00402BFF DC35 42F34A00 fdiv qword ptr ds: ; 机器码 112833956 除以780
00402C05 DD5D CC fstp qword ptr ss:
00402C08 DD45 CC fld qword ptr ss:
00402C0B E8 82EBFFFF call 00401792 ; 得144658 十六进制是23512
00402C10 68 01030080 push 80000301
00402C15 6A 00 push 0
00402C17 50 push eax
00402C18 68 01000000 push 1
.....
00402C4C 50 push eax
00402C4D 68 02000000 push 2
00402C52 BB 007D4000 mov ebx,00407D00
00402C57 E8 964B0000 call 004077F2 ; 取后五位是23512
00402C5C 83C4 1C add esp,1C
.....
00402CC7 DD45 B8 fld qword ptr ss:
00402CCA DC25 4AF34A00 fsub qword ptr ds: ; 机器码112833956-46578
00402CD0 DD5D B0 fstp qword ptr ss:
00402CD3 DD45 B0 fld qword ptr ss:
00402CD6 E8 B7EAFFFF call 00401792 ; 得 112787378十六进制是6B8FFB2
00402CDB 68 01030080 push 80000301
00402CE0 6A 00 push 0
00402CE2 50 push eax
00402CE3 68 01000000 push 1
00402CE8 BB C0834000 mov ebx,004083C0
00402CED E8 004B0000 call 004077F2
00402CF2 83C4 10 add esp,10
00402CF5 8945 AC mov dword ptr ss:,eax
00402CF8 68 01030080 push 80000301
00402CFD 6A 00 push 0
00402CFF 68 05000000 push 5
00402D04 68 04000080 push 80000004
00402D09 6A 00 push 0
00402D0B 8B45 AC mov eax,dword ptr ss:
00402D0E 85C0 test eax,eax
00402D10 75 05 jnz short 00402D17
00402D12 B8 B2984900 mov eax,004998B2 ; ā
00402D17 50 push eax
00402D18 68 02000000 push 2
00402D1D BB 007D4000 mov ebx,00407D00
00402D22 E8 CB4A0000 call 004077F2 ; 取后五位是8FFB2
00402D27 83C4 1C add esp,1C
.....
00402D8A E8 514A0000 call 004077E0
00402D8F 83C4 04 add esp,4
00402D92 DD45 9C fld qword ptr ss:
00402D95 DC35 52F34A00 fdiv qword ptr ds: ; 机器码112833956 除以 362
00402D9B DD5D 94 fstp qword ptr ss:
00402D9E DD45 94 fld qword ptr ss:
00402DA1 E8 ECE9FFFF call 00401792 ; 得 311696 十六进制是 4C190
00402DA6 68 01030080 push 80000301
00402DAB 6A 00 push 0
00402DAD 50 push eax
00402DAE 68 01000000 push 1
00402DB3 BB C0834000 mov ebx,004083C0
00402DB8 E8 354A0000 call 004077F2
00402DBD 83C4 10 add esp,10
00402DC0 8945 90 mov dword ptr ss:,eax
00402DC3 68 01030080 push 80000301
00402DC8 6A 00 push 0
00402DCA 68 05000000 push 5
00402DCF 68 04000080 push 80000004
00402DD4 6A 00 push 0
00402DD6 8B45 90 mov eax,dword ptr ss:
00402DD9 85C0 test eax,eax
00402DDB 75 05 jnz short 00402DE2
00402DDD B8 B2984900 mov eax,004998B2 ; ā
00402DE2 50 push eax
00402DE3 68 02000000 push 2
00402DE8 BB 007D4000 mov ebx,00407D00
00402DED E8 004A0000 call 004077F2 ; 取后五位是 4C190
00402DF2 83C4 1C add esp,1C
00402DF5 8945 8C mov dword ptr ss:,eax
00402DF8 8B5D 90 mov ebx,dword ptr ss:
00402DFB 85DB test ebx,ebx
00402DFD 74 09 je short 00402E08
00402DFF 53 push ebx
00402E00 E8 DB490000 call 004077E0
00402E05 83C4 04 add esp,4
00402E08 FF75 8C push dword ptr ss:
00402E0B 68 5AF34A00 push 004AF35A ; -
00402E10 FF75 A8 push dword ptr ss:
00402E13 68 5AF34A00 push 004AF35A ; -
00402E18 FF75 C4 push dword ptr ss:
00402E1B 68 5AF34A00 push 004AF35A ; -
00402E20 FF75 E0 push dword ptr ss:
00402E23 B9 07000000 mov ecx,7
00402E28 E8 2DFAFFFF call 0040285A ; 用-连接字符串得到的注册码是2EEE4-23512-8FFB2-4C190
我的注册码是:2EEE4-23512-8FFB2-4C190
至此。
分析完毕。
这里贴出来一下半自动注册机把。
要超级模块的。机器码=到整数(编辑框1.内容)
编辑框2.内容=取文本右边 (十到十六 (机器码 × 465), 5) + “-” + 取文本右边 (十到十六 (机器码 ÷ 780), 5) + “-” + 取文本右边 (十到十六 (机器码 - 46578), 5) + “-” + 取文本右边 (十到十六 (机器码 ÷ 362), 5)
在key里面应该这么填
然后就成功了=-=
至此。。。完结~
{:6_162:} 尼玛。。全错误了。。。。=-= 骚等 我在去修改下 我是板凳 楼主,图片没有啦{:6_162:} 扫地僧 发表于 2014-10-5 20:23
默默的看着菜菜师傅逗逼
{:6_167:}小样=-=。。。。真乖。 菜菜牛逼,带我飞 逗比菜菜好,膜拜分析算法,写注册机
(⊙o⊙) 膜拜分析算法 哈哈。菜菜大神也出来了!{:5_118:} 学习学习,带我们分析带我们飞