庞大资源库的计算机教程网站!
设为首页
加入收藏
总编信箱
投稿或申请专栏请先 [登 陆]
首页 操作系统 程序设计 图形图像 媒体动画 机械电子 WEB开发 数 据 库 办公系列 路由技术 网络原理 网络应用
认证考试 安全技术
首页>安全技术>软件破解>破解实例>正文
资料搜索
Google搜索
Google
返回上级列表

推荐文章

快速保存网页中所有图片的方法
Windows中让光驱巧妙“隐身”技
防范非法用户入侵Win 2000/XP系
两款比较典型的ASP木马防范方法
有关表格边框的css语法整理
Windows XP中可以被禁用的服务
SQL Server导出导入数据方法
Javascript所有对象的属性的获
网页(HTML)中的特殊字符
与篮球共舞,尽显模式本色
QQ病毒的手工清除方法
Photoshop为极品美女打造性感睫
天衣无缝:IIS与PHP水火也相容
SQL Server存储过程编写和优化

超级电脑伴侣 1.14

 作者:本站收集   日期:2005-5-26
字号选择〖 〗/ 双击滚屏 单击停止   
工具:dede,peid,upx,ollydbg
平台:windows 2000 professional
声明:本文只作学习目的,如果需要此软件,请购买正版软件

最近好像ollydbg比较流行,softice有点被大家冷落了,:) 特别是由于windows2000的流行,hmemcpy断点的失效,使softice在2000下调试的难度更大了。其实,softice毕竟还是王牌级的工具。即时中断的功能,我觉得还是比ollydbg强的。本文介绍一下动态跟踪幻影,取得其注册码的思路。

不太喜欢爆破,所以,这篇破文还采用动态分析,来取得软件的注册码。

还是用peid检测一下,呵呵,是upx加的壳。用upx shell脱了壳。观察窗口的类名,得知程序是delphi编的。那当然得请出dede了,哈哈!打开注册窗口,此软件是采用机器码+用户名+注册码的方式注册的,机器码已经生成。打开注册窗口,用winsight得知这个窗口的类名是TfrmReg。呵呵,T开头的类名,97%是delphi的程序了,:)。用dede打开脱壳后的程序。找到这个窗口的代码Regform单元,查看它的button2click事件代码,也就是按下确定按钮时执行的代码,至于确定按钮为什么是button2,而不是button1,button3,其实很简单的,看dfm的坐标就可以了,不过,我是直接看了三个button的代码,一下就看出来,哪个是判断注册码的按钮了,呵呵。

这个时间的汇编代码如下,dede反编译的真整齐!整个过程不长,我就全贴出来吧。

* Reference to control edRegCode : TEdit
|
004D5A45 8B8320030000 mov eax, [ebx+$0320]

* Reference to: controls.TControl.GetText(TControl):System.String;
|
004D5A4B E8E44BF9FF call 0046A634 //delphi中vcl类的取控件文本方法,从TControl继承
004D5A50 8B45FC mov eax, [ebp-$04] //取得输入的假注册码
004D5A53 50 push eax
004D5A54 8D55F4 lea edx, [ebp-$0C]

* Reference to control edRegID : TEdit
|
004D5A57 8B831C030000 mov eax, [ebx+$031C]

* Reference to: controls.TControl.GetText(TControl):System.String;
|
004D5A5D E8D24BF9FF call 0046A634
004D5A62 8B45F4 mov eax, [ebp-$0C] //取得生成的机器码
004D5A65 50 push eax
004D5A66 8D55F0 lea edx, [ebp-$10]

* Reference to control edRegName : TEdit
|
004D5A69 8B8318030000 mov eax, [ebx+$0318]

* Reference to: controls.TControl.GetText(TControl):System.String;
|
004D5A6F E8C04BF9FF call 0046A634
004D5A74 8B45F0 mov eax, [ebp-$10] //取得注册名称
004D5A77 8D4DF8 lea ecx, [ebp-$08]
004D5A7A 5A pop edx

* Reference to : TfrmReg._PROC_004D51CC()
|
004D5A7B E84CF7FFFF call 004D51CC //根据机器码和注册名生成真正的注册码
004D5A80 8B55F8 mov edx, [ebp-$08] //edx中存放真正的注册码
004D5A83 58 pop eax //将假注册码取出来

* Reference to: system.@LStrCmp;
|
004D5A84 E8BBF2F2FF call 00404D44 //比较之
004D5A89 0F8515010000 jnz 004D5BA4 //不等的话,就去见鬼吧,:)
004D5A8F B201 mov dl, $01
004D5A91 A10CC34300 mov eax, dword ptr [$0043C30C]

|
004D5A96 E87169F6FF call 0043C40C
004D5A9B 8BF0 mov esi, eax
004D5A9D BA02000080 mov edx, $80000002
004D5AA2 8BC6 mov eax, esi

* Reference to: registry.TRegistry.SetRootKey(TRegistry;Windows.HKEY);
|
004D5AA4 E8036AF6FF call 0043C4AC
004D5AA9 B101 mov cl, $01

* Possible String Reference to: 'SOFTWARE\Super Computer Companion'
|
004D5AAB BA2C5C4D00 mov edx, $004D5C2C
004D5AB0 8BC6 mov eax, esi

...............
...........

004D5B6A 687C5C4D00 push $004D5C7C
004D5B6F 6A00 push $00
004D5B71 6A01 push $01
004D5B73 6A00 push $00
004D5B75 6A00 push $00
004D5B77 8D55E0 lea edx, [ebp-$20]
004D5B7A A1087F5000 mov eax, dword ptr [$00507F08]
004D5B7F 8B00 mov eax, [eax]

* Reference to : TApplication._PROC_0048A164()
|
004D5B81 E8DE45FBFF call 0048A164
004D5B86 8D45E0 lea eax, [ebp-$20]

* Possible String Reference to: '-注册成功'
|
004D5B89 BA8C5C4D00 mov edx, $004D5C8C

* Reference to: system.@LStrCat;
|
004D5B8E E86DF0F2FF call 00404C00
004D5B93 8B55E0 mov edx, [ebp-$20]
004D5B96 33C9 xor ecx, ecx

* Possible String Reference to: ' 感谢你对超级电脑伴侣的支持!希?
|
004D5B98 B8A05C4D00 mov eax, $004D5CA0

|
004D5B9D E86651FFFF call 004CAD08
004D5BA2 EB38 jmp 004D5BDC

* Possible String Reference to: '确定'
|
004D5BA4 687C5C4D00 push $004D5C7C //注册码不对时,跳到这
004D5BA9 6A00 push $00 //下面将弹出一个窗口,提示错误
004D5BAB 6A01 push $01 //可不是简单的messagebox哦,:)
004D5BAD 6A00 push $00
004D5BAF 6A00 push $00
004D5BB1 8D55DC lea edx, [ebp-$24]
004D5BB4 A1087F5000 mov eax, dword ptr [$00507F08]
004D5BB9 8B00 mov eax, [eax]

* Reference to : TApplication._PROC_0048A164()
|
004D5BBB E8A445FBFF call 0048A164
004D5BC0 8D45DC lea eax, [ebp-$24]

* Possible String Reference to: '-输入错误'
|
004D5BC3 BAE85C4D00 mov edx, $004D5CE8

* Reference to: system.@LStrCat;
|
004D5BC8 E833F0F2FF call 00404C00
004D5BCD 8B55DC mov edx, [ebp-$24]
004D5BD0 33C9 xor ecx, ecx

* Possible String Reference to: ' 注册码错误,请重新输入注册码!'
|
004D5BD2 B8FC5C4D00 mov eax, $004D5CFC
004D5BD7 E82C51FFFF call 004CAD08
004D5BDC 33C0 xor eax, eax
004D5BDE 5A pop edx
004D5BDF 59 pop ecx
004D5BE0 59 pop ecx
004D5BE1 648910 mov fs:[eax], edx

用ollydbg加载程序,随便输入一个密码,34343434,注册名cby,在004D5A4B 处下断点,点击确定,程序被拦下来了,边单步执行,边分析。分析结果,看上面。执行到004D5A80 时,d ecx 就可以看到可爱的注册码了。我的机器上是SCC-1273319695192326899922242331022116027104。如果要知道注册码的算法,到004D5A7B 跟进去,分析就可以了。
由于这个程序是delphi编的,而且错误提示不采用messgebox,又是在2000下调试,如果不对症下药,用dede调试,将麻烦不少。

ollydbg还是个好东西哦,好好利用吧~~~
上一篇:《新狐电脑传真》V1.0注册算法分析    下一篇:图片制作软件幻影2003破解手记  
[发送给好友]  [关闭窗口]  [返回顶部]   转载请注明来源:www.it00.com   
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
责任编辑: 原点 投稿作者: 本站收集
信息来源: 网络 录入时间: 2005-5-26
关于我们 - 广告服务 - 版权申明 - 网站地图 - 联系方式 - 总编信箱 - 会员投稿