安卓逆向9-ida静态调试
###
mac的我已经安装好了
###
ida介绍
ida工具不只是能调试so文件的,还能打开smali文件,dex文件的,这个要知道
ida是一个逆向工具
最大的好处就是能把c++写的可执行文件,反编译成为汇编,再转成c语言,
###
ida是国外的软件,是收费的,
我们要使用ida pro
国内一般使用比较多的就是ida 7
分为32位,64位的,
###
C语言简单普及
数据类型:
//整型
int a = 100;
//字符串
char *s = "yuanrenxue.com";
//浮点型
float = "3.14";
//双精度浮点型
double = "3.141592633764862";
//指针
int *a_add = &a;
这个指针,重点理解一下,
上面这是定义一个指针,int *a_add = &a;,
print(add) 这是打印内存的地址,比如是0x10000
print(*add) 这是打印内存地址里面的具体的值,比如是100
//字符串常量 不能修改
const char *ss = "hello";
//数组
int num[5];
char name[5];
//清空
name = 0;
//c++
MD5::MD5()
std::__ndk1::init()
*a_add + 1
//1个字节(Byte) = 8位(Bit) 1K=1024B 1M = 1024K 1G = 1024M 1T = 1024G
int8_t //占8位 1个字节
int16_t //占16位 2个字节
###
什么是NDK开发
###
Java如何调用so库里的方法/函数
#####
ida静态调试
案例,之前有一个飞船自毁的apk,
我们静态调试点击new,
如果是动态调试点击go
点击new之后,选择so文件打开,
###
做成的面板函数列表很重要!!!
左边可以搜索方法的名字,
面板左侧函数列表可以查看每个函数的偏移量(相较于.so文件头的偏移量)
###
F5键(windows fn+F5) 把汇编代码转成C代码
我们看不懂,可以点击F5,然后就可以看到一个c语言的代码,如下图,
你想要看汇编,那就点击这个c语言的某一个值,就跳转到了汇编语言那里了
export是导出函数,这个是很重要的,可以暴露的接口
###
ctrl + s 查看so文件段信息
在汇编语言界面,点击ctrl+s,可以弹出这个段
这个init段就是在初始化,
有时候一些密码就会在这个里面,
###
我们F5转成了c语言,但是还是有很多看不懂的,
这个时候我们可以做一些还原,
还原方法:
这个就是反向在调用java的代码
###
我们看到v5,就是我们输入的密码,这个是从java调用的,获取到了我们输入的密码
我们可以把v5改名,input_password
v7是哪里来的,是v6给的,v6是一个常量,我们可以把v6改为real_password
这样就更加的清晰了
###
我们还可以加注释,
因为我们可能是一天分析不完,我们可以加注释,
如何注释?点击键盘的斜杠,/
这就是我们保存的我们改名字和加注释的文件,我们下次就可以打开之后继续进行分析了
###
如何手动注册?
这次是换了一个app了,
你用jadx打开了文件,是调用的so文件的getAS,
但是你打开so文件,你会发现没有这个so文件的方法名,
你搜索JNI_ONLoad,就是在这里进行了手动注册
###
我们使用上面的JNIENV进行还原,注意还原的格式,不要胡乱还原,!!!
RegisterNative就是这个把名字注册成为了另外一个名字,
###
上面就是ida静态调试了
这个时候我们还可以打开一个ida,进行动态调试
这样就是静态调试看c代码,
动态调试看汇编,然后一步一步往下看,
这就是ida双开,
密码就是内置到so文件的,
我们之前是直接绕过了密码,现在去so文件,直接获取他的密码,如果操作?
###
###