微信逆向分析(二)——逆向分析的方法

上一篇,聊到逆向分析是找偏移,有依据地找,效率会快。这一篇聊下找偏移方法。只说概念,具体的细节,后续会配合实战再展开细说。

找偏移的方法

1、内存

逆向的目的,是找功能或者数据在内存的地址。最直接的方法,就是在内存里面搜索。

对于数据:可以直接在内存搜索。

对于功能:如果知道代码的特征码,也可以直接在内存寻找。

(所谓代码的特征码,具体是一串字符串,在内存是唯一的,可以用来搜索定位)。

2、界面

带界面的软件,一般流程就是:

1、软件生成界面,界面上会有按钮,编辑框这些控件。

2、用户操作界面,点击按钮或者输入文字等等。

3、软件接收到用户的操作,调用对应的功能。

4、调用的功能对数据进行处理。

5、处理结果显示在界面上。

如果知道这个流程在代码里面是怎么实现的,就能找到对应的功能和数据。

3、日志

软件运行的过程,是没办法像视频那样可以倒放。

想了解软件的运行过程,需要在软件里面埋下标记。

当软件运行过程,经过做标记的位置,就可以输出信息。(也就是所谓的日志)

而逆向分析,通过日志找到标记,能知道对应的功能在哪里。

4、字符串

代码里面写的字符串,编译成软件的过程,会被当作全局数据,存在固定的地方。

而字符串可能有对应的功能,比如 send msg,可能出现在发送信息的功能附近。

通过搜索字符串,看看哪里用了这个字符串,就可以找到对应的功能。

5、系统函数

写代码的过程中,需要用到一些比较基础的功能。(比如读写文件,收发网络信息)

这个时候直接用系统提供的接口就可以了。

这些接口是公用的,所以偏移固定的。

通过拦截这些接口,就可以定位了。

6、第三方库

软件可以看成由多个模块组成的,像搭积木那样。

而这些模块大多通用的,比如:界面模块,日志模块。

为了加快开发速度,一般会使用别人写好的第三方模块。

如果第三方模块是开源的,相当知道软件的一部分代码。

通过第三方的代码,可以推算出软件还没解开的另一部分。

下一篇,找到偏移之后,聊聊利用偏移写代码的思路。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值