需要逆向工具资料+v:13140310004
一、首先刚开始学逆向的话
java基础+Android开发:
到什么程度证明我们的Java基础打牢?
1.首先我们需要看懂反编译的Java代码
2.最好能动手写一个apk (不需要太注重布局文件,侧重点在于代码)
二、Java逆向分析
1.当我们需要修改一个apk的dex文件(Java代码) 不能够直接修改Java代码 只能修改smali代码
需要掌握 smali代码 Android studio动态调试(调试是基于我们导入的smali文件) JEB动态调试 ddms工具使用(方法剖析)
2…NDK开发部分
掌握怎样编写so库文件 -> jni接口(动态注册、静态注册)
3…ARM汇编
掌握常用的指令 (ARM机器码运算) 跳转 B BL BLX
4.IDA调试
掌握一些必备的技能
固定的流程
一些IDA技巧(函数不能F5解决办法)
一些快捷键(用着用着就自然而然记住了)
了解一些窗口
5.apk保护策略
偏向于概念 很重要
资源文件的混淆
签名校验
Java代码混淆
框架检测(xposed frida substrate(受限于5.0以下真机)) frida偏向于测试 xposed偏向于插件化
三、xposed框架用法(重启)
安装及知道如何使用
用法:
hook 普通方法 构造方法 匿名内部类
进阶用法:
hook 自加载的dex-> 一些dex本来是加密的 那么在分析 看不到它的dex 这就是自加载
这张状况:ddms工具-> 进行方法剖析 -> 我们在ddms方法剖析中能够找到这个方法,但是在反编译apk类里面找不到这个类
怎么去hook? 两种方法 1.我们hook它的父类 -> 拿到这个classloader对象 2.hook loadclass方法 -> 拿到这个classloader对象
反射查找类
要hook的函数的参数比较复杂 -> 反射拿到这个参数
frida框架(基于通信的)
比较高级功能 -> 拿到地址来进行hook (内存泄漏)