知识点儿
- IDA的基础使用。
(1)Exports窗口是导出表(so中能让外部调用的函数)
(2)Imports窗口是导入表(so调用到外面的函数)
(3)解决中文乱码问题:双击进去查看check方法 并按键盘f5将汇编转换成C语言 但是这里看到好多中文乱码 此时按住alt+A键打开ASCII string style窗口,然后点击set default encodings 在弹出框中选择8-bit的change 选择utf-8后点击ok回到c语言界面按f5刷新一下界面 乱码问题解决。
(4)导入jni.h文件,增强代码可读性:点File->Load file->Parse C header file 找到jni.h所在位置 点打开 此时显示Compilation successful 导入成功。
(5)n键重命名
BNE: 数据跳转指令,标志寄存器中Z标志位不等于零时, 跳转到BNE后标签处
BEQ: 数据跳转指令,标志寄存器中Z标志位等于零时, 跳转到BEQ后标签处
- 分析伪代码的技巧:导入jni.h文件、改变参数结构定义(Convert to struct* )
- 程序签名的方式以及验证签名的方式。
- JNI函数参数(JNIenv)
参考链接1
参考链接2
参考链接3
小结
- 首先使用APKTOOL反编译APK,然后找到so文件,然后用IDA打开so文件(上一篇介绍啦,这儿就不多说了)
- 然后搜索关键字(诸如check,signature等),然后根据自己的长项分析(把IDA的强大功能利用好)。
- 我是参考链接1里的内容学习的,那么分析IDA编译的伪代码,根据检索信息,F5(键盘快捷键)查看伪代码,为了使代码更容易看懂,可以多了解了解JNIenv。
- 分析逻辑之后在16进制窗格修改代码。并保存。
- 从新签名、打包APK。