ida pro7.0导入jni.h
在使用ida逆向android的so的时候,如果使用的是ida pro7.0的版本并且逆向的so是arm系列的,例如arm64-v8a和armeabi-v7a的由于缺少JNIEnv等结构,反编译后查看函数就变得很不友好,armeabi-v7a的还比较人性化,会自动添加JNIEnv等结构体,如下
armeabi-v7a x86

选中int然后按下y就能修改成为JNIEnv结构

然后就能看到识别出来的jni的api了

这里没有添加类型就能完成修改结构体,因为ida自动添加了arm32位的,我们可以查看导入的arm32 通过在ida的菜单栏的view->subview-type libraies

x86的不能看到这个添加类型,但是能直接修改为JNIEnv
arm64-v8a
但是如果是arm64-v8a的so,当我们还是使用同样的方式时,会得到如下错误

在ida pro7.0等高本版中**(只能是ida pro7.0以上),添加JNIEnv等的结构体时候,我们可以通过在ida的菜单栏的view->subview-type libraies**中,按下insert,添加android arm来完成添加JNIEnv结构,

此时再修改参数类型,使用f5功能时候,看伪代码就变得很有好了。如下

x86_64
对于x86_64的so文件,不能使用arm64-v8a的添加方式,因为在对应的库里没找到,如下

此时只能将jni.h导入才可以完成,这里导入jni_all.h
首先将jni_all.h的内容复制下来,写入jni_all.h内

然后设置一下ida
- option->compiler

/usr/include;D:\sofeware\ndk\android-ndk-r10e\platforms\android-21\arch-x86_64\usr\include
*导入jni_all.h 使用
File->load file–>parse C header file

导入成功

最后来修改一下函数的参数类型

这样就完成了解决ida对JNIEnv等结构缺失的问题,在分析so的时候变得也更加友好方便。
ida pro7.0添加JNIEnv等结构体方法
1万+

被折叠的 条评论
为什么被折叠?



