首页
社区
课程
招聘
[原创]玲珑3D几何作图工具 V2.06的注册流程全面分析:爆破分析->算法分析->注册机->探究算法的本质
发表于: 2010-11-24 16:18 7366

[原创]玲珑3D几何作图工具 V2.06的注册流程全面分析:爆破分析->算法分析->注册机->探究算法的本质

2010-11-24 16:18
7366

【文章标题】: 玲珑3D几何作图工具 V2.06的注册流程全面分析
【文章作者】: zouzhiyong
【作者邮箱】: zzydog@foxmail.com
【软件名称】: 玲珑3D几何作图工具 V2.06
【软件大小】: 763KB
【下载地址】: http://www.linglong3d.net/download/Linglong3dV2.06.rar
【加壳方式】: 没有加壳
【保护方式】: 序列号,实际上是KeyFile
【编写语言】: Microsoft Visual C++ 6.0
【使用工具】: od+peid+windows记事本+破解辅助计算器
【操作平台】: 虚拟机windows XP
【软件介绍】: 简单灵活的立体几何作图软件
【作者声明】: 这是自己首次详细的算法分析,文章可能有很多不当之处。还请大家来指正。

        之前一直在找CrackMe来练习,感觉上有点脱离现实软件的注册算法,因此特意找一个共享软件来练习一下,总体感觉上难度不是不大,只是注册方式有点怪。至于怎么个怪法,下面开始分析。之前发过的算法分析可能是过于草率了吧,未能得到邀请码。
这次是从最简单的爆破开始逐步深入到算法分析,然后到写注册机,最后到探究注册算法的本质。分析尽量详细,比较通俗易懂。希望这次能得到大家的回复和支持,得到一个邀请码。


【分析过程】:
        开始就用PEID查了一下,没有加壳的,是用Microsoft Visual C++ 6.0编写的程序,用OD载入进去,一看到那些乱七八糟的函数名就知道是MFC写的程序。小弟菜鸟一个,第一次分析MFC程序,MFC的程序真的是非常的头疼,要在一大堆封装代码上找出关键算法,幸好,软件的注册提示信息还是比较全的。

爆破追踪:

跟踪 入手点1-------输入错误信息跟踪:
        废话说多了,切入正题。首先要说一下软件比较怪的注册流程。
        软件运行后,窗口标题会显示软件没有注册,如果是超过了使用次数会显示已经超过了使用次数,并且弹出窗口要你输入解密锁密文。如图所示:

实际上这个输入框根本就没有任何意义,这仅仅是显示一个输入框而已,并没有任何功能(除了相应WM_CLOSE这个消息外),不管你输入的注册码正确与否,都不会作出反应,只能关掉。可能你会说只有正确的注册码才会有反应,但是下面就证明你是错的。
        究竟是怎样看的出来的呢。我是通过这样发现的:开始想从这里入手跟踪注册流程的,下断bp GetDlgItemTextW,没有断下,消息断点没有断下,既然是MFC的话就更不用下GetWindowTextW了。此时想到如果获取了密文后一定会存放于某个buffer缓冲区的,因此,可以通过搜索内存来定位数据,然后对数据下断即可。
        在随便输入字符串,点击确定后,我用winhex 搜索软件的全部内存,只找到一处,就是MFC资源框所在的buffer。正常情况下,如果有获取到内容到缓冲区的话,就肯定不止一处的,除非是根本没有获取内容。为了验证,我又做了两次对比,在点击确定的前和后搜索内存,结果是一样的,同样的地址。


        其后又做一个次验证,就是在该地址下内存访问断点(硬件访问都试过了),然后按确定,没有被断下。
        根本没有对密文框数据访问,到这里就证明了这个对话框根本就是废的,只是显示你没有注册而已。就是说,注册不能通过输入的形式来实现。这就是我在前面所说的怪异支出。

跟踪入手点2-------经典的查找字符串方式:
       
        如果一开始就看字符串的话就不用走这么多弯路了,但是一开始就找字符串的话也不会发现作者的注册手段了~~,那个“虚伪”的对话框。
        好,查找字符串,发现了一个关键的东西,就是窗口标题。这个很明显是切入点了。

随便跟入一个,就来到了所在的函数,下面代码:

00402380   .  6A FF         PUSH -1
00402382   .  68 96DC4000   PUSH Geometry.0040DC96                                      ;  SE 处理程序安装
00402387   .  64:A1 0000000>MOV EAX,DWORD PTR FS:[0]
0040238D   .  50            PUSH EAX
0040238E   .  64:8925 00000>MOV DWORD PTR FS:[0],ESP
00402395   .  81EC C0000000 SUB ESP,0C0
0040239B   .  53            PUSH EBX
0040239C   .  55            PUSH EBP
0040239D   .  56            PUSH ESI
0040239E   .  57            PUSH EDI
0040239F   .  8BF1          MOV ESI,ECX
004023A1   .  6A 00         PUSH 0
004023A3   .  E8 8CAF0000   CALL <JMP.&MFC42.#1134_?AfxEnableControlContainer@@YAXPAVCO>
004023A8   .  83C4 04       ADD ESP,4
004023AB   .  8D4C24 1C     LEA ECX,DWORD PTR SS:[ESP+1C]
004023AF   .  E8 1C880000   CALL Geometry.0040ABD0
004023B4   .  8D4C24 14     LEA ECX,DWORD PTR SS:[ESP+14]
004023B8   .  C78424 D80000>MOV DWORD PTR SS:[ESP+D8],0
004023C3   .  E8 38ECFFFF   CALL Geometry.00401000
004023C8   .  8D4C24 14     LEA ECX,DWORD PTR SS:[ESP+14]
004023CC   .  C68424 D80000>MOV BYTE PTR SS:[ESP+D8],1
004023D4   .  E8 67ECFFFF   CALL Geometry.00401040
004023D9   .  8D4C24 14     LEA ECX,DWORD PTR SS:[ESP+14]
004023DD   .  E8 EEEEFFFF   CALL Geometry.004012D0
004023E2   .  8D4C24 14     LEA ECX,DWORD PTR SS:[ESP+14]
004023E6   .  E8 75EDFFFF   CALL Geometry.00401160
004023EB   .  8D4C24 14     LEA ECX,DWORD PTR SS:[ESP+14]
004023EF   .  E8 0CEEFFFF   CALL Geometry.00401200
004023F4   .  8D4C24 1C     LEA ECX,DWORD PTR SS:[ESP+1C]
004023F8   .  8BF8          MOV EDI,EAX
004023FA   .  E8 61880000   CALL Geometry.0040AC60                                      ;  //这里就是关键CALL了,需要跟入
004023FF   .  8BCE          MOV ECX,ESI
00402401   .  8BE8          MOV EBP,EAX                                                 ;  //ebp=上面的CALL返回值,返回值必须为2
00402403   .  E8 26AF0000   CALL <JMP.&MFC42.#2621_?Enable3dControls@CWinApp@@IAEHXZ>
00402408   .  68 5C624100   PUSH Geometry.0041625C                                      ;  Local AppWizard-Generated Applications
0040240D   .  8BCE          MOV ECX,ESI
0040240F   .  E8 14AF0000   CALL <JMP.&MFC42.#6117_?SetRegistryKey@CWinApp@@IAEXPBD@Z>
00402414   .  BB 04000000   MOV EBX,4
00402419   .  8BCE          MOV ECX,ESI
0040241B   .  53            PUSH EBX
0040241C   .  E8 01AF0000   CALL <JMP.&MFC42.#4159_?LoadStdProfileSettings@CWinApp@@IAE>
00402421   .  6A 6C         PUSH 6C
00402423   .  E8 F4AE0000   CALL <JMP.&MFC42.#823_??2@YAPAXI@Z>
00402428   .  83C4 04       ADD ESP,4
0040242B   .  894424 18     MOV DWORD PTR SS:[ESP+18],EAX
0040242F   .  85C0          TEST EAX,EAX
00402431   .  C68424 D80000>MOV BYTE PTR SS:[ESP+D8],2
00402439   .  74 1D         JE SHORT Geometry.00402458
0040243B   .  68 48054100   PUSH Geometry.00410548                                      ;  CGeometryView
00402440   .  68 08174100   PUSH Geometry.00411708                                      ;  CMainFrame
00402445   .  68 50044100   PUSH Geometry.00410450                                      ;  CGeometryDoc
0040244A   .  68 80000000   PUSH 80
0040244F   .  8BC8          MOV ECX,EAX
00402451   .  E8 C0AE0000   CALL <JMP.&MFC42.#520_??0CSingleDocTemplate@@QAE@IPAUCRunti>
00402456   .  EB 02         JMP SHORT Geometry.0040245A
00402458   >  33C0          XOR EAX,EAX
0040245A   >  50            PUSH EAX
0040245B   .  8BCE          MOV ECX,ESI
0040245D   .  C68424 DC0000>MOV BYTE PTR SS:[ESP+DC],1
00402465   .  E8 A6AE0000   CALL <JMP.&MFC42.#986_?AddDocTemplate@CWinApp@@QAEXPAVCDocT>
0040246A   .  8D4C24 34     LEA ECX,DWORD PTR SS:[ESP+34]
0040246E   .  E8 97AE0000   CALL <JMP.&MFC42.#296_??0CCommandLineInfo@@QAE@XZ>
00402473   .  8D4424 34     LEA EAX,DWORD PTR SS:[ESP+34]
00402477   .  8BCE          MOV ECX,ESI
00402479   .  50            PUSH EAX
0040247A   .  C68424 DC0000>MOV BYTE PTR SS:[ESP+DC],3
00402482   .  E8 7DAE0000   CALL <JMP.&MFC42.#5214_?ParseCommandLine@CWinApp@@QAEXAAVCC>
00402487   .  8D4C24 34     LEA ECX,DWORD PTR SS:[ESP+34]
0040248B   .  51            PUSH ECX
0040248C   .  8BCE          MOV ECX,ESI
0040248E   .  E8 6BAE0000   CALL <JMP.&MFC42.#5301_?ProcessShellCommand@CWinApp@@QAEHAA>
00402493   .  85C0          TEST EAX,EAX
00402495   .  75 3D         JNZ SHORT Geometry.004024D4
00402497   .  8D4C24 34     LEA ECX,DWORD PTR SS:[ESP+34]
0040249B   .  C68424 D80000>MOV BYTE PTR SS:[ESP+D8],1
004024A3   .  E8 50AE0000   CALL <JMP.&MFC42.#617_??1CCommandLineInfo@@UAE@XZ>
004024A8   .  8D4C24 14     LEA ECX,DWORD PTR SS:[ESP+14]
004024AC   .  C68424 D80000>MOV BYTE PTR SS:[ESP+D8],0
004024B4   .  E8 77EBFFFF   CALL Geometry.00401030
004024B9   .  8D4C24 1C     LEA ECX,DWORD PTR SS:[ESP+1C]
004024BD   .  C78424 D80000>MOV DWORD PTR SS:[ESP+D8],-1
004024C8   .  E8 43870000   CALL Geometry.0040AC10
004024CD   .  33C0          XOR EAX,EAX
004024CF   .  E9 AA020000   JMP Geometry.0040277E
004024D4   >  8B4E 20       MOV ECX,DWORD PTR DS:[ESI+20]
004024D7   .  6A 03         PUSH 3
004024D9   .  E8 14AE0000   CALL <JMP.&MFC42.#6215_?ShowWindow@CWnd@@QAEHH@Z>
004024DE   .  8B46 20       MOV EAX,DWORD PTR DS:[ESI+20]
004024E1   .  8B50 20       MOV EDX,DWORD PTR DS:[EAX+20]
004024E4   .  52            PUSH EDX                                                    ; /hWnd
004024E5   .  FF15 C8F54000 CALL DWORD PTR DS:[<&USER32.UpdateWindow>]                  ; \UpdateWindow
004024EB   .  8D4C24 1C     LEA ECX,DWORD PTR SS:[ESP+1C]
004024EF   .  E8 2C8C0000   CALL Geometry.0040B120
004024F4   .  3BC7          CMP EAX,EDI
004024F6   .  7D 0B         JGE SHORT Geometry.00402503
004024F8   .  8D4C24 1C     LEA ECX,DWORD PTR SS:[ESP+1C]
004024FC   .  E8 1F8C0000   CALL Geometry.0040B120
00402501   .  EB 02         JMP SHORT Geometry.00402505
00402503   >  8BC7          MOV EAX,EDI
00402505   >  83FD 02       CMP EBP,2                                                   ;  //EBP是关键值,一定要为2
00402508   .  75 26         JNZ SHORT Geometry.00402530                                 ;  //这个是关键跳,爆破点
0040250A   .  8B4E 20       MOV ECX,DWORD PTR DS:[ESI+20]
0040250D   .  68 40624100   PUSH Geometry.00416240                                      ;  玲珑3D几何作图软件2.06版  //这个是注册成功显示的标题
00402512   .  E8 D5AD0000   CALL <JMP.&MFC42.#6199_?SetWindowTextA@CWnd@@QAEXPBD@Z>
00402517   .  E8 CAAD0000   CALL <JMP.&MFC42.#1175_?AfxGetThread@@YGPAVCWinThread@@XZ>
0040251C   .  85C0          TEST EAX,EAX
0040251E   .  0F84 EA010000 JE Geometry.0040270E
00402524   .  8B10          MOV EDX,DWORD PTR DS:[EAX]
00402526   .  8BC8          MOV ECX,EAX
00402528   .  FF52 7C       CALL DWORD PTR DS:[EDX+7C]

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 7
支持
分享
最新回复 (20)
雪    币: 216
活跃值: (144)
能力值: ( LV10,RANK:160 )
在线值:
发帖
回帖
粉丝
2
希望大家能支持一下~~
把文章的文档也上传~~
上传的附件:
2010-11-25 09:32
0
雪    币: 334
活跃值: (70)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
3
一篇好文,会成为精华吧
2010-11-25 09:37
0
雪    币: 216
活跃值: (144)
能力值: ( LV10,RANK:160 )
在线值:
发帖
回帖
粉丝
4
能拿个邀请码就不错了~~
2010-11-25 09:42
0
雪    币: 37
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
不错,新手膜拜中......
2010-11-25 10:02
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
新手 还不怎么看得懂
2010-11-25 12:00
0
雪    币: 216
活跃值: (144)
能力值: ( LV10,RANK:160 )
在线值:
发帖
回帖
粉丝
7
这么快就沉了?
2010-11-27 10:33
0
雪    币: 2548
活跃值: (965)
能力值: ( LV12,RANK:1010 )
在线值:
发帖
回帖
粉丝
8
支持一下原创精神。。。。
2010-11-27 10:45
0
雪    币: 28
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
留个脚印!。。。。
2010-12-24 21:07
0
雪    币: 122
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
向楼主虚心学习!
2010-12-25 01:27
0
雪    币: 517
活跃值: (35)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
11
很不错。就是在注册文件中暗藏了秘密。
2010-12-25 12:18
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
可以值得好好学习!
2010-12-25 13:27
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
太强大了……膜拜………………
2011-6-7 00:05
0
雪    币: 30
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
太强了 新手菜鸟表示很仰慕
2011-6-7 17:28
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
rhf rhf
2011-8-4 10:59
0
雪    币: 5
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
学习一下。。。
2011-8-5 13:05
0
雪    币: 40
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
膜拜楼主强文。
2011-8-6 09:32
0
雪    币: 50
活跃值: (483)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
楼主的帖,放下内容不说。就排版来讲也是很不错的。
有不少好帖估计光是乱乱的。就被人忽视过去了
2011-8-6 12:08
0
雪    币: 31
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
好文章 慢慢学习
2011-8-19 11:03
0
雪    币: 29
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
学习了。MFC的库函数在汇编下真晦涩
2013-1-26 06:27
0
雪    币: 230
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
21
又见webwizard大侠
2013-3-26 13:27
0
游客
登录 | 注册 方可回帖
返回
//