首页
社区
课程
招聘
《财务分析师 V5.8 Build 329 专业版》脱壳过程+破解方法
发表于: 2005-9-6 16:28 5417

《财务分析师 V5.8 Build 329 专业版》脱壳过程+破解方法

2005-9-6 16:28
5417
【破文作者】oHuangKeo [无门无派,有想过加入个什么组织,但他们不收我。想想还是算了。]
【作者主页】7f1K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4y4H3j5h3y4W2M7#2)9J5k6h3#2K6L8W2)9J5k6h3y4G2L8g2)9J5c8X3#2W2L8h3u0W2M7Y4y4Q4x3V1k6G2K9s2g2S2L8X3N6C8k6h3)9`.
【电子邮件】ohuangkeo@hotmail.com
【作者QQ 】6899944
【文章题目】智能财务分析软件,《财务分析师 V5.8 Build 329 专业版》脱壳过程+破解方法(为软件生存着想,不做出注册机了。)
【破解平台】WinXP sp2 + OD
【文章简介】今天一论坛看到有人发一贴,想要破解此软件。想想没什么事做,正好练练手,久了不用就会忘的。与于下手试之。
【破解过程】

1。下载程序,安装。

2。直接OD加载程序。(我的习惯,因为如果加壳,OD会告诉我的。)程序停在006C9000处,OD没有提示,但asm代码看起来怎么有点不对劲?
006C9000 >  9C              pushfd
006C9001    60              pushad
006C9002    E8 02000000     call    FAp.006C9009

这很明显是加过壳的嘛。不管那么多,先一步步试试再说,失败了再用工具去查是什么壳。F7一直向下走,走到006C9087处,发现后面提示是“kernel32.GetSystemDirectoryA”。一想,他找系统目录做什么哇,en,小心地走,看看他想做什么。
006C9087    FF95 2A3A4000   call    dword ptr ss:[ebp+403A2A]               ; kernel32.GetSystemDirectoryA
F8步过,下一句是一个跳转,去之。

一直F8步过,到006C9162处才知道,他是想在系统目录里创建“reg.dll”文件。想想,要么这是程序运行时判断是否注册的模块,要么是就是算注册码的模块。
006C9162    FF95 0A3A4000   call    dword ptr ss:[ebp+403A0A]               ; kernel32.CreateFileA
这后面肯定是写Reg.dll文件了,安全,F8一直走下去,注意看OD给你的注释。(在此过程中,发现他还把Reg.dll的时间改成了2004-06-13,我想他是怕搜索新建的文件吧。)

走哇走,没多远,停停停,在006C93ED处有一个retn,(脱壳要注册jmp ,retn等等,一些跳转的指令。)再看看上一条指令:
006C93E6    61              popad
006C93E7    9D              popfd
006C93E8    68 A87A4000     push    FAp.00407AA8
006C93ED    C3              retn
很明显了,popad和popfd平横堆栈之用,push 00407AA8和retn做一个跨段跳转。这里面应该就是真正的程序入口了。
好,就跟进去。(retn也只有跟进了,呵呵。)

en,好熟悉,在哪里见过。再说,一串大字写着“VB5!6&vb6chs.dll”。对,这里就是脱壳点了。直接用OD脱之,修正后的OEP“7AA8”,要是脱壳后的程序没法运行,还要这个地址来修复IAT呢。
00407AA8      68            db      68                                      ;  CHAR 'h'
00407AA9      807D4000      dd      FAp.00407D80                            ;  ASCII "VB5!6&vb6chs.dll"
00407AAD      E8            db      E8
00407AAE      EE            db      EE
00407AAF      FF            db      FF
00407AB0      FF            db      FF
00407AB1      FF            db      FF
00407AB2      00            db      00
00407AB3      00            db      00
00407AB4      00            db      00
00407AB5      00            db      00
00407AB6      00            db      00
00407AB7      00            db      00
00407AB8      30            db      30                                      ;  CHAR '0'
00407AB9      00            db      00
00407ABA      00005800      dd      FAp.00580000
00407ABE      00004800      dd      FAp.00480000

好了,关掉,通通关掉。运行脱壳后的程序,ei,一切正常,东点点,西点点,都正常,说明脱壳成功。庆祝一下,等着,WC去一下先。(后用工具查壳,为“PEBundle 2.0x”,小弟孤陋寡闻,没见过。但想想刚才那个Reg.dll,好像还没用到,记好了,一定有他的用处的。)

3。破解程序。
  刚才脱壳时已经知道了,程序是用VB5写的,心里应该有点数,该在哪些函数上下断点了。
用OD载入脱壳后的程序,在命令行输入 bpx hmemcpy后回车。哇,好多!不管,先排个序。找到__vbaStrCmp,喔,也好多,不能一个一个下断点吧。累死人哦。
还是命令行输入“bpx __vbaStrCmp”,全部给我拦下!然后 Alt+B ,打开断点窗口,先把所有断点关了。
好,F9运行程序。打开注册窗口,随随输入注册码,回到OD,把刚才关掉的断点,全都打开。回到软件,点“注册使用”,好!被OD给拦住了,要想打此过,留下买路钱啦。
0052C0EA   .  50            push    eax
0052C0EB   .  51            push    ecx
0052C0EC   .  FF15 68114000 call    dword ptr ds:[<&MSVBVM60.__vbaStrCmp>]  ;  MSVBVM60.__vbaStrCmp

上面两个push是推入两字串,然后比较的。把 push eax 改成 push ecx (文件偏移地址:0012C0EA),让推入的两个串相同,另存改后的程序,用OD重新打开再用上面的路子走到这里来。
哎呀,怎么注册菜单不能点了。一看标题,哈哈,“(已注册)”,很好看的几个字。再随便点点,用用。程序无异常,说明暴破成功。

4。总结一下:
        A.程序在用户输入注册码时,如果比较正确就会把注册码放入[HKEY_CURRENT_USER\Software\VB and VBA Program Settings\App_NameP\Registration]处。再程序启动时,会把从注册表里取出注册码,然后比较是否正确。很显然,程序只用一个地方判断注册码,太大意了。
        B.后再沿着刚才改过的地方向上走,找到有一处是调用reg.dll的地方,跟踪发现,这个dll是为程序提供申请码和注册码的算法之内的东东。我还发现,这个申请码怎么这么熟悉,一想,哦,在我破解WinXp总管里见过,一样的嘛。哈哈,真是巧啦。

        C.最后提供一个跟踪reg.dll时的一个地址。
0042A8D5   .  0BC0          or      eax, eax                                ;  Reg.DecryptStringFun1

【破解心得】
  程序验证注册码要放在多处。加不加壳用处不是很大,有一点作用。这个软件犯的错误就是只有一处判断注册码。“高级”写的程序本来就笨,还明日张胆的比较一下。
【破解声明】与时共进!(此文章只提供了脱壳和暴破的方法,没提供注册机或是算码器之内的思路和算法,只是作为一个技术的交流。)
【版权申明】本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!

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

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 671
活跃值: (738)
能力值: ( LV9,RANK:1060 )
在线值:
发帖
回帖
粉丝
2
reg.dll是共享软件软件加密算法模块2004.12版,包含了各种算法,我用它来写注册机的哦
2005-9-6 16:34
0
雪    币: 221
活跃值: (137)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
3
顶一下。
2005-9-6 16:39
0
雪    币: 442
活跃值: (1246)
能力值: ( LV12,RANK:1130 )
在线值:
发帖
回帖
粉丝
4
最好分析一下 Reg.DecryptStringFun
2005-9-6 16:54
0
雪    币: 242
活跃值: (163)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
5
以前在这贴的:
835K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3k6U0k6$3y4Z5K9h3&6S2i4K6u0W2j5$3!0E0i4K6u0r3K9h3&6V1k6i4S2Q4x3X3g2H3K9s2m8Q4x3@1k6K6K9r3!0%4N6r3!0H3K9h3y4Q4x3@1b7%4y4U0M7`.

原来我启动验证没找出..
2005-9-6 17:00
0
雪    币: 214
活跃值: (15)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
顶一下
2005-9-6 20:50
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
学习,很好的分析@@
2005-9-6 21:07
0
雪    币: 251
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
好破文
好文章
2005-9-6 21:16
0
雪    币: 61
活跃值: (160)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
9
鼓励鼓励!
2005-9-7 01:40
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
好文章。不赖啊!
2005-9-8 10:39
0
游客
登录 | 注册 方可回帖
返回