maxwgf 发表于 2017-1-24 22:16

爆破一款带网络验证的程序,分享思路与过程~

本帖最后由 maxwgf 于 2017-1-24 22:37 编辑

今天在网上看到一个外挂脱壳与破解的视频教程,然而视频只讲到了脱壳,却没讲如何破解{:301_1008:}于是自己百度上搜了这款同版本外挂,自己尝试爆破(该版本外挂年份已久,貌似已失效...也是,没失效的话也不可能发出来了,听闻破解外挂有搞头{:301_997:})下面进入主题吧。
首先说一下网络验证,目前非常多的软件采用这种方式来保护程序,防破。有的加一层网络验证,厉害点的就多加几层,这款外挂只加了一层,破解起来比较简单。
1、查壳,发现加了Nspack,采用ESP定律法脱壳,有一点需要留意:
00C247BC    9C            pushfd
00C247BD    60            pushad
00C247BE    E8 00000000   call 1-PAutoM.00C247C3 ; 到了call这里需要运行,这里会循环解密,循环大概8/9次吧,然后程序会到达OEP,即可脱壳;


2、脱壳后用OD载入程序,我采用F12暂停法破解,首先F9运行,程序跑起来,我们点击登陆,很明显,这是个网络验证;


3、我所了解到的处理网络验证的方法,主要是采取跳过关键call的方式,也就是说,得找到调用网络验证的关键call,然后让程序跳过这个call即可跳过网络验证,达到去网络验证的效果,我们直接暂停,然后找到最后一个函数,右键-显示调用;


4、进入这段程序后,我们发现调用api的这个call附近并没有跳转可以跳过它,也就不是关键call,于是找到段首,F2下断点;




5、接着重新加载程序,F9运行,程序跑起来,然后点击登陆,程序被断下来;


6、我们在右下角的堆栈窗第一个地址处右键-反汇编中跟随;


7、发现第4步中的call来自这行代码,它上面有个call,而且附近有个跳转,可以跳过它,或许这就是关键call,是不是我们试试就知道了,先标注一下它为关键call;


8、我们在段首F2下断点,接着重新加载程序,重复第5步中的操作,程序断下来后,我们开始单步;


9、到了我们所认为的关键call附近,如果下面的是关键call,那么这个就是关键跳转,我们仔细看,初步分析,这个跳转是由一个cmp(比较)控制的,cmp byte ptr ds:,0x0,我们看到 ds:的值为0,这里让ds:与0相比较,如果左边等于等于右边,那么这个jnz就不跳转,如果左边不等于右边,jnz就跳转,为了分析,我们先不做任何操作,继续单步;


10、跳转没有实现,证实了我们上面的分析,继续单步,发现程序走到我们期初标记的关键call的时候,程序进入到我们第4步中所下断点的段首,那就非常明显了,我们的假设与分析是正确的,那的确是个关键call,也就是唤起网络验证的关键点,接下来要做的就是让关键跳转实现,跳过关键call;


11、我们重新加载程序,让程序断下来,单步来到关键跳附近,既然是cmp byte ptr ds:,0并且ds:=0,那么我们只需要将ds:与非0值比较即可,索性我们让它跟1比较好了,0自然不等于1,修改为cmp byte ptr ds:,1,既然左边不等于右边,接下来的跳转就能够实现了,我们单步验证,好,到了这里,我们保存一下破解文件;


12、关掉OD或者重新加载,因为这个程序不能同时在OD内外运行,然后运行破解文件,点击登陆,发现已经成功跳过网络验证,大功告成。


总结:该外挂破解起来比较简单,因为只有一层网络验证,注意点就是脱壳的时候,有个循环解密要留意,另外,程序在OD中运行比较慢,每次单步不是特别流畅。

免CB下载:https://pan.baidu.com/s/1qXOj1aW(土豪随意{:301_978:})

PS:该程序360会报毒,建议在虚拟机内运行,想要练手的可自行下载(已删去破解文件与脱壳文件{:301_997:})~

以上分析仅代表个人观点,如有不足还请指正{:301_996:}

maxwgf 发表于 2017-1-26 09:45

zhuyong770 发表于 2017-1-26 09:07
这是脱机版本的传奇世界辅助?

是不是脱机我不知道,表示不玩游戏{:301_999:}只是针对它的网络验证

maxwgf 发表于 2017-1-26 00:15

Kingsama 发表于 2017-1-26 00:07
学习了,希望楼主多发点這样的教程供我这种小白借鉴。。

谢谢支持,有合适的一定会发{:301_996:}

12349xxx 发表于 2017-1-24 22:29

大神你好

maxwgf 发表于 2017-1-24 22:33

12349xxx 发表于 2017-1-24 22:29
大神你好

{:301_999:}还是新手

云中岳 发表于 2017-1-24 22:41

楼主的学习精神值得我们学习

maxwgf 发表于 2017-1-24 22:42

云中岳 发表于 2017-1-24 22:41
楼主的学习精神值得我们学习

共同进步{:301_996:}

onhax 发表于 2017-1-24 22:56

很好的思路

maxwgf 发表于 2017-1-24 23:00

onhax 发表于 2017-1-24 22:56
很好的思路

{:301_996:}有其他方法也欢迎留言交流

猪的18次方 发表于 2017-1-24 23:21

很清晰的思路学习学习谢谢

caroot1996 发表于 2017-1-24 23:50

谢谢分享,很6的思路,借鉴一下

tianhett 发表于 2017-1-24 23:55

楼主,请收下我的膝盖!!
页: [1] 2 3 4 5 6 7 8 9
查看完整版本: 爆破一款带网络验证的程序,分享思路与过程~