Shark恒 发表于 2014-11-29 03:51

软件逆向分析的思路流程【新手必看】

前几天VIP成员建议我录制一个逆向软件时使用的思路流程。
我觉得这种思路问题,录制视频也不太好讲。不如就写成文字,也可以给大家都看看。

首先你拿到一个软件,肯定会受到限制,否则的话也谈不上有什么可逆向的。
那你就要看清他限制了你什么,比如:注册限制?功能限制?时间限制?还是其他?

方式1:
找到了限制,你可以开发你的想象,如果你是这个软件的作者,你会使用什么方法什么函数达到当前这个限制效果。
这是一个很重要的环节,你可以去猜测,然后调试的过程中印证你的猜测,这时候就要看你的基本功了。
经过这样一番猜测与印证猜测,你也就找到了切入点。当然也有可能软件本身就是残疾版。
什么是残疾版?就是本身功能不全,不是限制。只有购买后作者才发给你完整功能版。
这种软件也是需要值得注意的,别以为他限制你了,结果找了N个小时没有切入点,其实他是残疾版。

方式2:
你可以确定是什么限制以后,直接去下断,下断从哪儿开始呢?
如果“方式1”的猜测与印证猜测,你不太理解或者当前不适合你的话,那试试下面这个方法。
观察一下标题栏?状态栏?信息框?按钮?某字符串?编辑框?标签?创建文件行为?写入注入表行为?等其他位置有没有关键信息。
这些我们都可以作为切入点使用。当然这里也要注意,看看软件是不是网络验证。
如果是网络验证,你没有通过封包分析的话,直接本地做文章的话可能会没有什么效果。即便是有效果,大多数情况可能也是自我安慰。
然后我们继续说,找到了上面的切入点(非网络验证),我们都知道,软件最终都会写入注册码到某个位置。
如果不是存在本地的话,那就是网络验证了。所以本地验证的软件,注册码肯定保存在本地。
那现在你要做的是什么?你要确定注册码写入到了什么位置。是创建了文件?还是写入到了注册表?还是其他方式?
因为我们如果找不到真码或者注册码算法的话,能找到这里也是可以的。
为什么?现在软件99%都是重启验证类型,所以他在重启或者使用功能的时候会再次读取这个位置的注册信息。
这么说你应该就明白是怎么回事了吧?我们可以通过重新启动或者使用功能的时候,把他断在读取的位置,然后进行分析修改。
同时也就找到了关键CALL、关键赋值、关键跳、甚至真码,更甚至注册码算法。
本地验证多种多样,变化莫测,要比网络验证好玩很多倍,你会看到各种不同软件作者的各种不同编程思路,很有意思。

关于网络验证:
很多新手对网络验证特别重视,总觉得会了网络验证才是真正的学会PJ了,其实你们错了,而且错的一塌糊涂!
正因为你们是这样想的,所以我才确定有这种想法的是纯新手。要说逆向网络验证难不难?难!但是!有一种特殊的情况是不难的。
什么特殊情况?就目前国内*游*戏*辅*助*使用的网络验证而言,这就是特殊情况,逆向他们都不能算是逆向!
为什么?因为目前他们使用的网络验证都可以买到源码或者免费下载到源码,逆向这种网络验证就相当于考试拿着答案填上就行,称不上叫做“逆向”!
只要你会编程,不管你会什么语言的编程,随便会一门,你就可以看懂他们的源码,他们在什么地方做了验证,需要返回什么数据,一看便知!
同时,在配合源码中这些关键位置写出对应的代码,返回他需要的数据即可。拦截正版数据,将网络验证本地化。
甚至可以在你的服务器上伪造一个他的服务器,由你来掌控他的软件。又有何难?
但是前提你要有网络验证的源码或者有正版账号,并且懂编程。如果无源码无正版号无正版数据不懂编程,那不出意外应该就无解了。
如果对编程一窍不通的话,上述思路是不可能完成的任务。如果你懂编程并且有源码,考试的时候把答案都给你了,你还怕自己不会抄答案吗?
以上关于网络验证的说法,不包含未公开源码的网络验证。仅针对目前国内*游*戏*辅*助*使用的常见商业网络验证。
未公开源码的网络验证也并非无解,只是需要花更多的时间去分析代码与封包。相对有源码的网络验证而言,要多花一些时间去陪它。

基本上这就是一个程序的逆向流程,我说完了。
如果有什么不对的或者不足的地方,欢迎纠错补充,同时我也学习一下,感谢大家。

读完了没明白我说的是什么意思?有一句话叫做:读书百遍其义自见。
请把我的话认真读100遍,你会对这些话有深刻的理解,且能转换成自己的思路。当然,在这之前你需要有一些基础。
如果连我们最常用的“OD”都不知道是个什么产物的话,那我觉得也不用读100遍了。还是先接触一些最基础的知识吧,比如OD的使用方法。

2014年11月29日 03:52:19 睡觉。。

许先生 发表于 2014-11-29 03:59

沙发不解释{:5_187:}

qilei1102 发表于 2014-11-29 06:46

恒大睡那么晚………

卖铁而已 发表于 2014-11-29 08:28

恒大大好辛苦哦

aniu 发表于 2014-11-29 09:47

谢谢分享了 恒大

七夜 发表于 2014-11-29 09:57

{:5_188:}辛苦了 恒大

虚竹 发表于 2014-11-29 10:12

挖槽!我看了看!这个思路还可以!{:5_189:}

AoQc 发表于 2014-11-29 10:23

辛苦了 ...

感谢 ...

keke120 发表于 2014-11-29 10:34

感谢恒大指点迷津

sndncel 发表于 2014-11-29 10:55

{:5_121:}还有网络验证没有说到呀。。。。。。。很是期待呀。。。。因为现在的软件百分之八十都是网络验证呀。。。。
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 软件逆向分析的思路流程【新手必看】