首页
论坛
专栏
课程

[原创] IDA导入Jni.h

2017-5-18 14:15 8761

[原创] IDA导入Jni.h

2017-5-18 14:15
8761

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 反编译出来的就看起来舒爽多了。


 




[推荐]看雪企服平台,提供安全分析、定制项目开发、APP等级保护、渗透测试等安全服务!

上传的附件:
上一主题 下一主题
最新回复 (21)
猫仙大人 2017-5-18 17:41
2
0
这个我已经看过很多次了  你敢不敢把这个Jni.h  放出来看看 
hiccup 2017-5-18 20:24
3
0
ida现在根本就不需要手动导入了,直接在变量上按  ‘y’,改为  JNIEnv*  就行了
无边 2017-5-18 21:37
4
0
不需要手动导入,你是哪个版本的?
DMemory 3 2017-5-19 12:50
5
0
猫仙大人 这个我已经看过很多次了 你敢不敢把这个Jni.h 放出来看看
附件已经上传了。实际上就算你用了我的附件也不一定能编译成功。跟机器环境有关。如果有问题,你可以仔细查一下报错,针对性解决一下就行了
DMemory 3 2017-5-19 12:52
6
0




无边

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

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

影子不寂寞 2017-5-20 09:29
7
0
学习一下。
猫仙大人 2017-5-24 10:53
8
0
楼主我太爱你了
clumsybirda 2017-7-3 20:23
9
0

11111111

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:  }
VIPJK 2017-10-5 18:36
11
0
楼主您好,  我用的是6.8  导入jni.h成功,  insert  JNIEvent成功,  但是f5的代码还是  vx+xxx  (v3  +  343)  .为什么呢?  知道的朋友麻烦指点下.  系统:  window10  64
twsxtd 2017-10-26 12:44
12
1
IDA  高版本内置了这些结构体,不需要导入jni.h;如果没有的话,在Views->Open  subviews  ->  Type  Libraries  中添加Android  ARM的lib即可。
Gintoki 2017-10-26 16:28
13
0
twsxtd IDA 高版本内置了这些结构体,不需要导入jni.h;如果没有的话,在Views->Open subviews -> Type Libraries 中添加Android ARM的lib即可 ...
原来如此
tinxi 2017-10-31 11:13
14
0
已经不需要导入jni.h
bluth 2017-11-17 11:42
15
0
马克    原来如此
茅山小僧 2017-12-7 14:38
16
0
有木有Python相关头文件导入方法
sakura零 4 2018-1-16 11:50
17
0
请问一下,导入后
sakura零 4 2018-1-16 11:51
18
0
local  type里有jnienv,但是还是不解析,是怎么让IDA重新分析呢?
樊辉 2018-3-15 11:44
19
0
加入宏  __midl;
更改sdk路径
qldxsun 2018-4-22 11:21
20
0
twsxtd IDA 高版本内置了这些结构体,不需要导入jni.h;如果没有的话,在Views->Open subviews -> Type Libraries 中添加Android ARM的lib即可 ...
7.0还是没有啊
yinX 2 2018-9-19 11:32
21
1
hiccup ida现在根本就不需要手动导入了,直接在变量上按 ‘y’,改为 JNIEnv* 就行了
有效,很赞!
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编辑 ,原因:
游客
登录 | 注册 方可回帖
返回