学破解有阵子了,可没有定性静下心来好好分析,以下为整理后的内容,望版主给邀请码.
看过一些破解的文章,总算小有收获,现分享下.
软件名称就不公布了,该软件在国内刚起步,在Japan小有名气,毕竞Japan小有名气,本文只是介绍小弟的从无到有的经历,供大家参考下.
大致介绍下软件的加密手段,
1.软件使用Sentinel SuperPro7.5的加密狗.无狗时软件显示为体验版,有狗时显示相应的注册公司名称.
2.作为体验版本时,其对记录的处理量限制为250个.有时间限制,从开始日期到结束日期约140天.正式狗注册后记录处理量增加约为1000W.时间延期.
破解历程
预热分析下:
1.先用查壳软件PeId看看,软件使用Visual C++7.0 开发,无壳.(这样不错,挑个简单的试试)
2.分析下软件加密(人工的)过程,软件有狗时,处理记录量增加为100W,公司名也有了,估计狗中记录了相应的数据。
3.上网搜了下关于狗的破解文单,感谢"月中人"提供文章,也是在看雪中找到的http://bbs.pediy.com/showthread.php?threadid=31497,(虽然本文最终使用的是爆力破方法,但对破解思路还是有很大帮助.)
4.看了下有点复杂,不管是模拟狗还是仿真狗工作量太大,一时还没有足够时间.看能先只能偿试爆力破解....
5.设想下这个软件的加密过程,即然有狗可以设置最大记录量,程序默认时又是250.在软件注册界面上也显示了该信息.那么程序中肯定有一个常量设置为250,折算成16进制为FA ,由于该变量最大时可达100W,折算后FA的格式大致为FA 00 00 00,若为FF FF最多只是65535左右.所以系统应该起码是4个字节记录100W这个值.
6.使用UltraEdit 查找16进制,搜到了一大堆FA 00 00 00.(看来这种小儿科方法不起效)
7.学习OllyDBG,分析代码。软在注册界面中有相应的相应的提示。(OllyDBG基本操作就不作介绍,个人觉得这个文章不错"OllyDBG+入门教程(多模式版)")
第一节:内存直接更改显示的内容。
定义目标一:让提示界面的处理记录数值250改掉。(当然这只是假象,定个小点的目档,实现起来容易)
a.利用字符串搜索关键字符,无果,没有与注册相关的内容。(忘了该软件主体语言是日文的,其英文及中文界面均使用动态库加载实现。)
b.由于注册界面中显示了最大处理记录数250,可利用API函数设置断点。使用OllyDBG打开破解的exe文件,直接运行,在打开注内窗口前,设置所有的调用SetWindowTextA处使用断点.观察Stock中参数内容,果真不出所料,某处调用参数内容为250.还有相应的日期期限等等相关信息。(真是爽哉!!!)
c.下手,准备搞掂它。此处的SetWindowTextA在整个程序中只有三处调用。刚开始很困惑,这么多界面,起码也应该有很多处都要来设置界面中的内容吧,为何本程序只有三处,后来分析,我所跟踪均是函数实现处的SetWindowsTextA,大量的调用处我还不知道。
d.在断点处向上查入口,在SetWindowsTextA上面查看,果然有许多的CALL调用此处。在此需要有耐心,找到直正设置250这个值的入口。
e.程序太大,考虑下IDA这个软件吧。该软件分析程序较强,看MASM太多了,不如利用IDA来看调用图吧。这样综合两样工具来下手,对理解程序还是不错的。再来用Olydb下断点,不断的下断点并取消相应断点,很快我就可找到相应的入口。
f.这儿看到的是MOV EAX DS:[EDI],且250是个字符串型的。因此还得在后面仔细分析。
e.通过在寄存器中的"数据窗口中跟随",可找数据区中该值,手工编辑该数据,对应的内容为32 00 35 00 00 00,改成 39 00 35 00 00,这样注册界面上的250就会变成了950。虽然看上去很假,但还算是小有成就。也为下步的正式爆力破解作准备。
第二节:爆力破解
上面的内容可以骗自已,通过内存更改后,但软件内部依然还是按照250作为最大处理数量,必须想办法破除250限制。
定义目标二:让软件的最大处理数量正式变更为10000。
a.分析一下,即然250在内存中,综合“OllyDBG+入门教程”中的内存断点篇。也就是说程序中自然有一段代码是写这个内存中的内容为250,找个这个地方,让写入的值更大,也就相当于爆力解除250的限制了,先前的断点而且还只是字符型的,必需找到一个取值为FA的地方,该地方才是正式获取250该值的地方。
b.接第一节中改写内存中的内容这块,通过"-"键可以查看上一调用处,这时需要耐心及时间,通过不断的加载/移去调用处断点,这"XXXXX"地方后,堆栈出了"250"字符,而这个过程前,堆栈区出现了版本,限制时间等注册信息,那么在堆栈前应该有一个是获取了相应的值,再来转换为字符250显示出来。
c.找到了关键点,发现了FA这个值。并且知道它存放在0101DA98这个数据存储区内。只要修改该值,就可使用最大处理记录提升。但如何知道是在何处写入的呢?
d.感谢"OllyDBG+入门教程"中的内存断点。(这中间可经历了n天,因为初学破解,教程中的内部不一定马上领会,只有用过才知道)。在数据区0101DA98设置一个内存写入断点。于是来到了正式的设置250限制点。
e.ADD EAX 0FA 改成 ADD EAX 0FF。记住代码的位置。运行程序,大获全胜,注册界面最大记录处理数量变成为255。
f.51 FA 00 00 00 00是这段代码,可以改成更大的值,我换100W吧。100W=F4240H,最终修改代码就是51 40 42 0F 00。
总结:
历经3个月的样子,不过都是业余学习玩玩。下阶段再来向模拟狗破解。感觉破解还是需要耐心,然后就是多看看教学视频,都是不错的入门方法。还望楼主能给验证码,算了正式入门了。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!