逆向的流程和思路

简介: 逆向的流程和思路

对逆向比较陌生的同学,刚拿到样本可能不知道从何入手,我根据自己的逆向经验总结了一下逆向的几个步骤,也可说是逆向的套路。如果你不知道从何处开始爆破,完全可以按照本文的几个步骤来爆破。

抓包

抓包是逆向的第一步,通过抓包可以找到找到你爆破的入口,比如你要让app拥有VIP权限,这是你可以从接口中找到VIP相关的字段,然后用该字段到app代码中搜索。再比如你要调用某个app的接口,而这个接口是加密的,那么你也可以从接口中找到加密的字段,然后用该字段到app代码中搜索。

抓包也是有很多学问的,有的app不会让你轻易的抓到包的,具体的内容关注后面的文章。

反编译

上文说了,抓包后拿着关键字到代码中搜索,怎么拿到app的代码呢?就需要反编译了。有的app可以直接反编译成功,但大部分的app都是加壳的,这时想拿到代码就需要脱壳。市面上也有好多可以自动脱壳的应用,知识星球中也有发出相关的应用,这些自动脱壳的应用一般只能脱免费的壳,如果加的壳是企业版的话就不能脱成功了,就需要自己手动脱壳了,相关内容在后面的文章会发出。

Hook

拿到关键字到代码中搜索,搜索出来的结果会有好多,那怎么确定哪一部分代码是我们需要的呢?可以自己排除一部分,比如一些关键字在系统的api种,就不需要关注,我们要关注的就是在应用包名下的那些关键字相关的代码。包名下关键字的代码也可能出现在好多方法中,怎么确定哪个方法是关键方法呢?这就需要通过Hook具体的方法来排除了。Hook可以使用Frida,由于Frida名气太大,有的应用会监测是否在使用Frida Hook,发现的话就直接崩溃退出。这时可以尝试其他的Hook工具,如算法助手、JSHook等,这些工具在知识星球中也有发出。关于这些工具具体的使用方法,也会在后面的文章中提及。

动态调试

通过Hook找到具体的方法后,想要进一步的了解方法中的业务细节,这是就需要动态调试,通过断点,一步步的调试代码,弄明白方法中的细节。根据调试的文件类型不同,可以分为dex调试和so调试,dex调试的话就是调试smali代码,用到的编辑器为Android Studio,SO调试就是调试汇编,用到的调试工具通常为IDA。

一般dex文件不需要动态调试,找到具体的方法后通过工具将smali文件转换成Java代码,比较容易看懂,也可以直接拿来用。

so文件的话,看起来就比较费力了,稍微有点安全意识的app,一般会把核心的代码放在so文件中,由于so反编译之后是汇编代码,不易读,动态调试的话也有一定的难点,所以都会把核心的加密和算法放在so文件中。其实,我们也不需要费心费力的去调试,知道调用的哪个jni方法后,可以通过unidbg模拟执行so,直接调用相关方法,得到自己想要的内容。

总结

文章介绍了逆向的几个步骤,一般都是按照这个套路来的,写的虽然简单,但是每个步骤里面都有好多学问,都有涉及到怎么对抗反调试。具体的每个步骤设计到的反调试,都会在后面的文章中介绍的,记得持续关注。道高一尺,魔高一丈。技术就是在不断地对抗中提升的。


相关文章
|
2月前
|
存储 算法
智能算法 | 刷题的方法真的找到正确思路了嘛
智能算法 | 刷题的方法真的找到正确思路了嘛
|
12月前
|
存储 小程序 数据库
小程序整体的思路
小程序整体的思路
169 0
|
8月前
|
安全 Shell 网络安全
5项目五:W1R3S-1(思路为主!)
5项目五:W1R3S-1(思路为主!)
53 0
|
机器学习/深度学习 存储 缓存
力扣70爬楼梯:思路分析+优化思路+代码实现+补充思考
力扣70爬楼梯:思路分析+优化思路+代码实现+补充思考
92 0
|
算法 搜索推荐 编译器
用调试来帮你分析并拿捏折半插入排序算法的流程
用调试来帮你分析并拿捏折半插入排序算法的流程
73 0
|
机器学习/深度学习 数据可视化 数据挖掘
RNAseq纯生信挖掘思路分享?不,主要是送你代码!(建议收藏)
RNAseq纯生信挖掘思路分享?不,主要是送你代码!(建议收藏)
230 0
|
Java
LanguageTool精简的两个思路
LanguageTool精简的两个思路
55 0
|
算法 C++
【牛客刷题-算法】加精 | 合并两个有序的链表 - 从思路设计、bug排除到最终实现的全过程
【牛客刷题-算法】加精 | 合并两个有序的链表 - 从思路设计、bug排除到最终实现的全过程
103 0
【牛客刷题-算法】加精 | 合并两个有序的链表 - 从思路设计、bug排除到最终实现的全过程
|
Java iOS开发 Spring
逆向实战 (26)
逆向实战(26)
248 0
逆向实战 (26)
|
iOS开发
逆向实战 (28)
上次分析说明
92 0
逆向实战 (28)