ida添加JNIEnv等结构体--arm64 arm32 x86 x86_64

ida pro7.0添加JNIEnv等结构体方法

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的时候变得也更加友好方便。

参考
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值