首页
社区
课程
招聘
[原创] IDA导入Jni.h
2017-5-18 14:15 26022

[原创] IDA导入Jni.h

2017-5-18 14:15
26022

IDA 分析Android so 文件时,因为缺少JNIEnv结构定义,反编译后看起来很不友好,如下图(后面注释是我自己手工对照加的 = =)。为避免以后无穷无尽的手动加注,接下来我们就来导入 JNIEnv 的结构定义让反编译代码看起来更轻松。


IDA 打开菜单 Options ->Compilter..

选择Visual C++ 我在VS2008 环境下编译通过,VS2015有问题。

Include directories 填入NDK中包含jni.h 的路径和VS2008中VC的include路径,两个路径间用”;”分隔。

Predefined macros 加入 __lint__ 宏定义。

jni.h 做如下三处修改(可能会出现不同情况,载入后可根据报错信息做具体修改)

 

返回IDA 按Ctrl+F9 载入 jni.h 文件就可以编译通过了。

然后在structures窗口里按下insert键-> add standard structure -> 选择"JNIEnv_",然后确定,之后IDA 反编译出来的就看起来舒爽多了。


 



[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

上传的附件:
收藏
点赞2
打赏
分享
最新回复 (24)
雪    币: 47
活跃值: (197)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
猫仙大人 2017-5-18 17:41
2
0
这个我已经看过很多次了  你敢不敢把这个Jni.h  放出来看看 
雪    币: 6813
活跃值: (1545)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hiccup 2017-5-18 20:24
3
1
ida现在根本就不需要手动导入了,直接在变量上按  ‘y’,改为  JNIEnv*  就行了
雪    币: 9479
活跃值: (757)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
无边 2017-5-18 21:37
4
0
不需要手动导入,你是哪个版本的?
雪    币: 3987
活跃值: (2390)
能力值: ( LV10,RANK:165 )
在线值:
发帖
回帖
粉丝
DMemory 3 2017-5-19 12:50
5
0
猫仙大人 这个我已经看过很多次了 你敢不敢把这个Jni.h 放出来看看
附件已经上传了。实际上就算你用了我的附件也不一定能编译成功。跟机器环境有关。如果有问题,你可以仔细查一下报错,针对性解决一下就行了
雪    币: 3987
活跃值: (2390)
能力值: ( LV10,RANK:165 )
在线值:
发帖
回帖
粉丝
DMemory 3 2017-5-19 12:52
6
0




无边

不需要手动导入,你是哪个版本的?

我是  6.8  ,理论上已经集成了这些结构体,但我有时候把  IDA  搞的抽风,无法直接加载的结构体的时候,就自己导入一下。同样的方法可以导入  elf.h  等……感觉还是相对方便的哈

雪    币: 6
活跃值: (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
影子不寂寞 2017-5-20 09:29
7
0
学习一下。
雪    币: 47
活跃值: (197)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
猫仙大人 2017-5-24 10:53
8
0
楼主我太爱你了
雪    币: 10
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
clumsybirda 2017-7-3 20:23
9
0

11111111

雪    币: 1013
活跃值: (1397)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
aihacker 2017-7-4 22:35
10
0
用你的jni.h报错信息如下:
Error  F:\android-ndk-r10\platforms\android-19\arch-arm\usr\include\jni.h,496:  Syntax  error  near:  jobjectRefType
Error  F:\android-ndk-r10\platforms\android-19\arch-arm\usr\include\jni.h,497:  Syntax  error  near:  }
雪    币: 79
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
VIPJK 2017-10-5 18:36
11
0
楼主您好,  我用的是6.8  导入jni.h成功,  insert  JNIEvent成功,  但是f5的代码还是  vx+xxx  (v3  +  343)  .为什么呢?  知道的朋友麻烦指点下.  系统:  window10  64
雪    币: 32
活跃值: (1020)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
twsxtd 2017-10-26 12:44
12
2
IDA  高版本内置了这些结构体,不需要导入jni.h;如果没有的话,在Views->Open  subviews  ->  Type  Libraries  中添加Android  ARM的lib即可。
雪    币: 468
活跃值: (60)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
Gintoki 2017-10-26 16:28
13
0
twsxtd IDA 高版本内置了这些结构体,不需要导入jni.h;如果没有的话,在Views->Open subviews -> Type Libraries 中添加Android ARM的lib即可 ...
原来如此
雪    币: 59
活跃值: (680)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
tinxi 2017-10-31 11:13
14
0
已经不需要导入jni.h
雪    币: 7
活跃值: (223)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
bluth 2017-11-17 11:42
15
0
马克    原来如此
雪    币: 1057
活跃值: (1737)
能力值: ( LV5,RANK:75 )
在线值:
发帖
回帖
粉丝
茅山小僧 2017-12-7 14:38
16
0
有木有Python相关头文件导入方法
雪    币: 699
活跃值: (444)
能力值: ( LV9,RANK:240 )
在线值:
发帖
回帖
粉丝
sakura零 4 2018-1-16 11:50
17
0
请问一下,导入后
雪    币: 699
活跃值: (444)
能力值: ( LV9,RANK:240 )
在线值:
发帖
回帖
粉丝
sakura零 4 2018-1-16 11:51
18
0
local  type里有jnienv,但是还是不解析,是怎么让IDA重新分析呢?
雪    币: 224
活跃值: (962)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
樊辉 2018-3-15 11:44
19
0
加入宏  __midl;
更改sdk路径
雪    币: 38
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
qldxsun 2018-4-22 11:21
20
0
twsxtd IDA 高版本内置了这些结构体,不需要导入jni.h;如果没有的话,在Views->Open subviews -> Type Libraries 中添加Android ARM的lib即可 ...
7.0还是没有啊
雪    币: 377
活跃值: (427)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
yinX 2 2018-9-19 11:32
21
1
hiccup ida现在根本就不需要手动导入了,直接在变量上按 ‘y’,改为 JNIEnv* 就行了
有效,很赞!
雪    币: 244
活跃值: (163)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
airbus 2018-10-12 11:15
22
0
/*
typedef enum jobjectRefType {
    JNIInvalidRefType = 0,
    JNILocalRefType = 1,
    JNIGlobalRefType = 2,
    JNIWeakGlobalRefType = 3
} jobjectRefType;
*/
这个枚举注释掉,是说ida不支持导入枚举定义吗?
最后于 2018-10-12 11:18 被airbus编辑 ,原因:
雪    币: 248
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
@=llfly 2020-7-2 14:24
23
0

mark

IDA 高版本内置了这些结构体,不需要导入jni.h;如果没有的话,在Views->Open subviews -> Type Libraries 中添加Android ARM的lib即可。

 

我的环境(IDA 7.0)默认只加载了一个armv12的库,遇到有些so文件,按Y修改为JNIEnv * 报错 Syntax error near: JNIEnv
按照以上方法添加Android arm就可以解决!

雪    币: 15
活跃值: (512)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
jfztaq 2021-5-13 05:35
24
0
怎么添加android ARM库
雪    币: 61
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
ICenE 2024-4-18 20:12
25
0
hiccup ida现在根本就不需要手动导入了,直接在变量上按 ‘y’,改为 JNIEnv* 就行了
虽然过了N年,感谢前辈
游客
登录 | 注册 方可回帖
返回