加密狗复制破解
这个教程没有谈太多的技术(主要是我对[脱壳破解]还是处在初级爆破阶段),只想和大家分享一些破解过程,有些过程已经有些忘记,大家凑合看吧。
因为自己是程序员,真是非常热爱这个行业,正因为热爱,所以对各方面的技术也都感兴趣,黑客入侵、木马、外挂、破解都干过,主要是当初所谓的成就感和来自别人崇拜的目光吧,但是因为自己主要是平时没事玩一玩,对一些软件自己动手破解后用着舒服一些,也没有加入过任何的组织(主要也是水平确实不够), 所以在几个方面始终都没有步入很深入的层次,最近加入吾爱,主要也是因为破解这个加密狗的原因,同时也是想自己能够在这个领域再提高一些,希望得到大家的指教。
好了,步入正题吧,朋友问我一个软件能否破解去掉狗,因为我对狗实际的破解经验不多,所以我只能说试试看吧,软件名字这里就不说了。
工具/原料
-
SentinelHASP
-
windows7
-
ollydbg2.01
-
Visual Studio
1:运行
-
1
拿到一个软件肯定是先运行看看喽(未插加密狗)
报错:
-
2
缺少运行环境,从标题上面看可以确定加密狗的厂商,google搜索之(遇到问题我很少会先问别人,基本都是先在网络上搜索,自己在寻找学习的过程也是自己进步的过程,毕竟自己经历了才是最难忘的嘛,过程比结果更重要)。
-
在搜索后发现,这个狗不简单啊,自己信心受到了一些打击,毕竟看介绍功能非常强大,最终在官网下载了软件和驱动
-
3
关掉VS再运行,果然没有提示被调戏,但已经感觉到这个软件有些不简单啊,现在显示找不到狗了,出现找不到加密狗了.
END
2:简单分析
-
1
有了提示对话框,大都都懂的,Debugger工具该上场了,先选择WinDbg吧,结果也不出所料一顿崩溃,算了用OD吧,虚拟机上的WinXP有OD(话说OD在Win8.1 64bits上面支持的非常不好),隐藏调试器,下断点在MessageBoxA(W),运行后进程自动退出,看来对付调戏做足了检测啊,那就直接运行吧,弹出无狗窗口.运行后F12暂停,切换到调用栈:
-
2
找到了调用来自哪里了,经过一顿分析,没什么进展,反而随着跟踪和调试,发现水越来越深,大量的花指令,大量的崩溃,深感自己有点力不从心了,还是继续在网上搜索相关的东西吧。
END
3:深入分析
-
1
通过一系列的分析,知道这个狗是 Aladdin HASP SRM,而且有AES-128加密算法的,本地安装有服务程序:hasplms.exe,开放TCP端口:1947(SentinelSRM (hasplm), Aladdin HASP License Manager),狗是网络版,只不过是localhost,客户端通过socket连接到localhost的hasplms去交互,同时对程序进行了查壳,壳为:
Signature: HASP HL Protection V1.X -> Aladdin
-
END
4:尝试各种方案
-
1
1).不带狗脱壳:<失败>
-
2
2).带狗脱壳:<失败>
Ctrl+A后代码显示为:
-
3
经查这是Borland C++的特征码。
-
4
3).模拟网络数据包/DeviceIoControl:<失败>
-
5
4).MultiKey等驱动级别模拟:<失败>
-
6
在模拟加密狗部分花费了大量的时间,最终在网上发现这种办法是针对HASP HL,而且是不支持AES-128的,即使后来新的模拟狗驱动支持AES-128,也需要把加密狗每次发送和返回的数据进行记录,建立一个Q-A数据表才可以,但他们说AES-128算法可是上万种啊。
END
5:寻找高人破解
-
1
通过加百度找到了‘COPYONE工作室’大牛们,打算向他们讨教,结果没人理,说给钱才可以,我就问了一下多少钱?说是至少5K,因为这个太复杂,破解需要一周的时间,问了一下朋友可否接受这个价格,朋友说有点贵,如果没办法也可以接受。后来自己也考虑了一下,自己之前花费了那么大的心血,如果去找别人收费破解,真的不甘心。
END
6:最后的战役
-
1
1).希望重现:
-
2
2).程序测试:
-
3
3).确定使用API HOOK方案:
-
4
5).API HOOK程序:
gHooks.Add(_T("KERNEL32.DLL"), "IsDebuggerPresent", my_IsDebuggerPresent);
-
5
6).HOOK时机:
-
6
7).分析截获的数据:
[ 1688]12:24:20.179 - ApiDebugger Loaded.
-
7
8).确定判断地址:
-
8
9).爆破方法:
代码写好了,也要选择插入位置,最终在内存找到了大片的90 90 90 90内存,然后在程序运行中动态的将代码写入到这个位置,同时在原代码处做了一个JMP语句.
END
7:测试通过
-
1
最后经过多次验证,100%确信自己真的把这个狗给破解了,过程中经历的艰辛和不眠立马化为无有,都被最后的成功所淹没,这种感觉妙不可言。
谢谢大家能看完,多提建议和意见,也希望熟悉这个加密狗的大牛和大神们也能分享这方面的经验,能够找到一种更简单快速的破解方法。
END
最后总结
-
对于这个加密狗破解,是自己花费了最大力气的一个(总历时应该有100小时),虽然最终是API HOOK+爆破,代码仅Patch 2个节,但为了这个2个字节确实经历了太多,每个破解思路都失败的时候也想过放弃,庆幸自己最终还是坚持了下来,赢取了胜利.
-
从这个过程中也发现自己在某些地方还非常的初级,尤其是算法分析上面,只有能深入算法分析,才能到达更高的层次,总是爆破不利于水平的提高,后面有时候会继续对这个加密狗进行研究,争取做到完美脱壳,将来再与大家分享。