浅谈软件加密狗破解经验

这个教程没有谈太多的技术(主要是我对[脱壳破解]还是处在初级爆破阶段),只想和大家分享一些破解过程,有些过程已经有些忘记,大家凑合看吧。
因为自己是程序员,真是非常热爱这个行业,正因为热爱,所以对各方面的技术也都感兴趣,黑客入侵、木马、外挂、破解都干过,主要是当初所谓的成就感和来自别人崇拜的目光吧,但是因为自己主要是平时没事玩一玩,对一些软件自己动手破解后用着舒服一些,也没有加入过任何的组织(主要也是水平确实不够), 所以在几个方面始终都没有步入很深入的层次,最近加入吾爱,主要也是因为破解这个加密狗的原因,同时也是想自己能够在这个领域再提高一些,希望得到大家的指教。

好了,步入正题吧,朋友问我一个软件能否破解去掉狗,因为我对狗实际的破解经验不多,所以我只能说试试看吧,软件名字这里就不说了。

1:运行
拿到一个软件肯定是先运行看看喽(未插加密狗)

报错:

缺少运行环境,从标题上面看可以确定加密狗的厂商,google搜索之(遇到问题我很少会先问别人,基本都是先在网络上搜索,自己在寻找学习的过程也是自己进步的过程,毕竟自己经历了才是最难忘的嘛,过程比结果更重要)。
在搜索后发现,这个狗不简单啊,自己信心受到了一些打击,毕竟看介绍功能非常强大(其实目前我还不知道这个狗是哪种类型)

最终在官网下载了软件和驱动:抱歉不能留网址

安装完成后,再运行,哦,检测到调试器?我没调戏它啊,想了一下肯定是因为我开着Visual Studio开发环境。

 


关掉VS再运行,果然没有提示被调戏,但已经感觉到这个软件有些不简单啊,现在显示找不到狗了,出现找不到加密狗了.
 


2:简单分析
有了提示对话框,大都都懂的,Debugger工具该上场了,先选择WinDbg吧,结果也不出所料一顿崩溃,算了用OD吧,虚拟机上的WinXP有OD(话说OD在Win8.1 64bits上面支持的非常不好),隐藏调试器,下断点在MessageBoxA(W),运行后进程自动退出,看来对付调戏做足了检测啊,那就直接运行吧,弹出无狗窗口.运行后F12暂停,切换到调用栈:

 


找到了调用来自哪里了,经过一顿分析,没什么进展,反而随着跟踪和调试,发现水越来越深,大量的花指令,大量的崩溃,深感自己有点力不从心了,还是继续在网上搜索相关的东西吧。

3:深入分析
通过一系列的分析,知道这个狗是 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
Matches: 42
Signature: HASP HL Protection V1.X -> Aladdin
Matches: 39



4:尝试各种方案
    1).不带狗脱壳:<失败>
    经过一系列尝试,确定不带狗是不可能脱掉的,遂向朋友拿到了USB加密狗(开始主要还是低估了这个狗,以为不带狗就可以脱壳,很傻很天真).

    2).带狗脱壳:<失败>
    有了加密狗,程序终于可以正确运行了,所以就尝试脱壳,使用"两次内存断点法寻找OEP",对.IDAta和.text分别下断点,还真定位到了,很兴奋(佩服大牛们分享的经验).

    Ctrl+A后代码显示为:
 

经查这是Borland C++的特征码。
    那就dump和IAT修复吧,分别是使用PETools和ImportREC,输入OEP地址并且调整IAT的Size到合适的大小,结果居然有近200个不能定位,我的妈呀,这可如何是好,进行了最后一翻挣扎,深感自己功力不够,无法确信自己可以手动修复IAT,即能找到每一个API的真正调用,但要把200个修复完也得把人累个半死啊,如果修复后还有其他检验就不好办了,最终不得不放弃。

 


    3).模拟网络数据包/DeviceIoControl:<失败>
    好吧,放弃了脱壳方案,就看看能不能模拟狗吧,因为是网络狗,所以可以先看看网络数据包。使用CommView截localhost:1947的数据包,经过带狗连续多次的分析,发现每次都是不同的,初步判断即使把网络数据包模拟返回估计也无法认证通过,最后简单的写程序测试了一下,确实是这样的,如果没有返回对应的数据包客户端就会出错,估计用HOOK DeviceIoControl也是一样的,再次放弃。

    4).MultiKey等驱动级别模拟:<失败>
    后来到网上又进行了一翻搜索,发现老外已经开发出很多驱动级别的HASP狗模拟,也找到了很多的配套工具,比如:h5dmp/h4dmp,hasploger,Toro Dongles Monitor,HaspHLDumper等等,经常一翻测试,最终使用h5dmp dump数据了,此时感觉自己终于看到了曙光,就用MultiKey相关的工具安装驱动,进行注册表文件的转换,导入注册表,结果拔掉狗经常无法找到驱动,或者还是失败,无法模拟,以下是注册表文件.


 


    在模拟加密狗部分花费了大量的时间,最终在网上发现这种办法是针对HASP HL,而且是不支持AES-128的,即使后来新的模拟狗驱动支持AES-128,也需要把加密狗每次发送和返回的数据进行记录,建立一个Q-A数据表才可以,但官方说AES-128算法可是上万种啊。
    "QTable"=hex:\
    42,84,... 84,AD,A4,\

    "ATable"=hex:\
    82,22,C2 ... 84,AD,A4,\
    如果程序总是随机使用某种加密算法,岂不哭死,直到现在才觉得模拟狗应该也走不下去了,号称全球第一的加密狗果然不简单,连国外的大牛们也不能破解其算法,还得制作Q-A数据库,对简单的或许可以,复杂的肯定就不行了吧,此时心灰意冷,感到很无助,耗费了很大的精力,到头来还是一场空,决定暂停破解,毕竟已经熬了几个夜晚和周末了。



    5).寻找高人破解:
    通过加一些QQ群找到了一些相关的有经验的大牛们,打算向他们讨教,结果没人理,说给钱才可以,我就问了一下多少钱?说是至少1w,因为这个太复杂,破解需要一周的时间,问如何破解,可否复制狗,回答只能爆破,无法复制狗,问了一下朋友可否接受这个价格,朋友说有点贵,如果没办法也可以接受。后继续询问对方,说要先付一半的钱,破解不了可以退一部分。我觉得不太可靠,和对方说我再考虑一下吧,就没有再联系对方。后来自己也考虑了一下,自己之前花费了那么大的心血,如果去找别人收费破解,真的不甘心。


5:最后的战役:
    1).希望重现:
    经历上述失败后,几天没有再继续,深感自己功力还是不够,就继续搜索相关技术和破解这个狗的相关信息,寻找更多的这个狗的相关工具,最后使用RTVIDTool2成功的将PW1和PW2从内存中dump出来,而且也保存出来.hvc文件,.hvc就是颁发给每个开发商的一个vendor code,里面肯定是有密码,AES Key和很多乱七八糟的信息,有了这个东西,就可以自己写个程序访问加密狗了。


推荐

  • QQ空间

  • 新浪微博

  • 人人网

  • 豆瓣

取消