首页
社区
课程
招聘
[原创]菜鸟 学注册机编写之 “MD5”
发表于: 2014-11-15 13:14 9295

[原创]菜鸟 学注册机编写之 “MD5”

2014-11-15 13:14
9295

测试环境
系统: xp sp3
sc_office_2003_pro
调试器 :od 1.10

高手不要见笑,仅供小菜玩乐,有不对或不足的地方还请多多指教,不胜感激!

一:定位关键CALL
1.        因为该软件是word插件,所以用OD载入word.exe,F9运行,运行后如下图:

2.  点击按钮”Save As PDF”出现如下界面

3.        点击”Register”随便输入用户名与注册码,如下图:

4.        点击 “暂停”  点击 “K” ,来到如下图的地方

5.        选择”MessageBoxExW” 右键 “显示调用”,然后在函数尾下好断点,F9运行,点”确定”,就会被断下

6.   接下来就是一直F8单步走,来到如下图的地方

7.        往上找就能找到关键跳与关键CALL,如下图

8.  在关键CALL下好断点后重新载入OD, F9运行,随便输入用户名与注册码,接着就是分析算法了

二:算法分析
1.  首先将注册码中含有小写字母转换成大写

1010EC3B           8BC6            mov eax,esi
1010EC3D           66:391E         cmp word ptr ds:[esi],bx 
1010EC40           74 1B           je short doc2pdf.1010EC5D
1010EC42           0FB708          movzx ecx,word ptr ds:[eax]              ; 判断并取字符
1010EC45           83F9 61         cmp ecx,0x61                             ; ECX小于a 就跳
1010EC48           72 0B           jb short doc2pdf.1010EC55
1010EC4A           83F9 7A         cmp ecx,0x7A                             ; ECX大于z 就跳
1010EC4D           77 06           ja short doc2pdf.1010EC55
1010EC4F           83C1 E0         add ecx,-0x20                            ; 满足条件就将ECX and -0x20
1010EC52           66:8908         mov word ptr ds:[eax],cx                 ; 存放
1010EC55           83C0 02         add eax,0x2
1010EC58           66:3918         cmp word ptr ds:[eax],bx
1010EC5B         ^ 75 E5           jnz short doc2pdf.1010EC42               ; 判断是否完成
1010EC5D           33C0            xor eax,eax
1010EC5F           E9 E2000000     jmp doc2pdf.1010ED46

1010EC3D           66:391E         cmp word ptr ds:[esi],bx          
1010EC40           74 1B           je short doc2pdf.1010EC5D
1010EC42           0FB708          movzx ecx,word ptr ds:[eax]              ; 判断并取字符
1010EC45           83F9 61         cmp ecx,0x61                             ; ECX小于a 就跳
1010EC48           72 0B           jb short doc2pdf.1010EC55
1010EC4A           83F9 7A         cmp ecx,0x7A                             ; ECX大于z 就跳
1010EC4D           77 06           ja short doc2pdf.1010EC55
1010EC4F           83C1 E0         add ecx,-0x20                            ; 满足条件就将ECX and -0x20
1010EC52           66:8908         mov word ptr ds:[eax],cx                 ; 存放
1010EC55           83C0 02         add eax,0x2
1010EC58           66:3918         cmp word ptr ds:[eax],bx
1010EC5B         ^ 75 E5           jnz short doc2pdf.1010EC42               ; 判断是否完成
1010EC5D           33C0            xor eax,eax
1010EC5F           E9 E2000000     jmp doc2pdf.1010ED46

1001744B      E8 A0280000     call <doc2pdf.WideCharToMultiByte>       ; 将用户名宽字符转换成单字符
10019D60 <doc2pd>  55              push ebp
10019D61           8BEC            mov ebp,esp
10019D63           56              push esi
10019D64           8B75 08         mov esi,dword ptr ss:[ebp+0x8]
10019D67           85F6            test esi,esi
10019D69           74 37           je short doc2pdf.10019DA2
10019D6B           8B55 0C         mov edx,dword ptr ss:[ebp+0xC]
10019D6E           85D2            test edx,edx
10019D70           74 30           je short doc2pdf.10019DA2
10019D72           8A0A            mov cl,byte ptr ds:[edx]
10019D74           8BC6            mov eax,esi
10019D76           84C9            test cl,cl
10019D78           74 25           je short doc2pdf.10019D9F
10019D7A           8D9B 00000000   lea ebx,dword ptr ds:[ebx]
10019D80           80F9 61         cmp cl,0x61                              ; 判断字符a
10019D83           7C 05           jl short doc2pdf.10019D8A
10019D85           80F9 7A         cmp cl,0x7A                              ; 判断字符z
10019D88           7E 0A           jle short doc2pdf.10019D94
10019D8A           80F9 41         cmp cl,0x41                              ; 字符A
10019D8D           7C 08           jl short doc2pdf.10019D97
10019D8F           80F9 5A         cmp cl,0x5A                              ; 字符Z
10019D92           7F 03           jg short doc2pdf.10019D97
10019D94           880E            mov byte ptr ds:[esi],cl
10019D96           46              inc esi
10019D97           8A4A 01         mov cl,byte ptr ds:[edx+0x1]
10019D9A           42              inc edx
10019D9B           84C9            test cl,cl
10019D9D         ^ 75 E1           jnz short doc2pdf.10019D80
10019D9F           5E              pop esi
10019DA0           5D              pop ebp
10019DA1           C3              retn

1001746D           E8 7E280000     call <doc2pdf.WideCharToMultiByte>       ; 将字串"f4hguNAg"转换成单字符

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

上传的附件:
收藏
免费 3
支持
分享
最新回复 (9)
雪    币: 10
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
支持小三三!!!
2014-11-15 13:33
0
雪    币: 38
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
火钳刘明...
2014-11-15 14:49
0
雪    币: 90
活跃值: (91)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
感谢分享,版区有你更精彩!
2014-11-15 16:52
0
雪    币: 3858
活跃值: (6954)
能力值: ( LV13,RANK:550 )
在线值:
发帖
回帖
粉丝
5
多谢支持。
2014-11-16 22:37
0
雪    币: 60
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
晚来 给个赞。谢谢分享。
2014-12-10 14:26
0
雪    币: 39
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
前面的破解还看得懂。。。到算法我就晕了。。。
2014-12-15 01:05
0
雪    币: 4
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
好教程   谢谢分享
2015-2-6 10:42
0
雪    币: 7
活跃值: (84)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
看了一下,很精彩,期待下个精华中...
2019-2-25 11:10
0
雪    币: 1826
活跃值: (657)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
后面的注释,需要学习什么才能做到。求解答。是需要看王爽的汇编吗?
2019-2-25 17:58
0
游客
登录 | 注册 方可回帖
返回