首页
论坛
课程
招聘
[原创]使用Unicorn Engine分析so
2019-3-1 00:08 22757

[原创]使用Unicorn Engine分析so

2019-3-1 00:08
22757

unidbg

Allows you to emulate an Android ARM32 and/or ARM64 native library.

This is an educational project to learn more about the ELF file format and ARM assembly.

Features

Emulation of the JNI Invocation API so JNI_OnLoad can be called.

Support JavaVM, JNIEnv.

Emulation of syscalls instruction.

Support ARM32 and ARM64 bit ELF.

Inline hook, thanks to HookZz.

Import hook, thanks to xHook.

Support simple debugger, instruction trace, memory read/write trace.



[公告]请完善个人简历信息,招聘企业等你来!

最后于 2019-5-17 15:29 被铭天星编辑 ,原因:
收藏
点赞10
打赏
分享
打赏 + 60.00
打赏次数 2 金额 + 60.00
 
赞赏  mb_bjvhnggy   +50.00 2019/09/16
赞赏  mb_bjvhnggy   +10.00 2019/09/10
最新回复 (100)
雪    币: 455
活跃值: 活跃值 (37)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
刘彬 活跃值 2019-3-1 01:54
2
0
特别感谢,让我发现了一个好东西
雪    币: 6476
活跃值: 活跃值 (78)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
无边 活跃值 2019-3-1 02:22
3
0
要怎么用呢,请给个简单的说明。
雪    币: 351
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
五天 活跃值 2019-3-1 09:20
4
0
感谢感谢
雪    币:
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
北方的季风 活跃值 2019-3-1 11:58
5
0
正好要分析一个so文件
雪    币: 389
活跃值: 活跃值 (84)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
铭天星 活跃值 2019-3-1 13:31
6
0
无边 要怎么用呢,请给个简单的说明。
src/test下面有使用方法
雪    币: 1494
活跃值: 活跃值 (306)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
Vn小帆 活跃值 2019-3-1 13:32
7
0
有个说明就 更好了        
雪    币: 2362
活跃值: 活跃值 (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
petersonhz 活跃值 2019-3-1 13:46
8
0
铭天星 src/test下面有使用方法
       public abstract class EmulatorTest extends TestCase  你这个实际不用启动模拟器?
雪    币: 389
活跃值: 活跃值 (84)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
铭天星 活跃值 2019-3-1 13:53
9
0
不需要启动模拟器,基于unicorn engine做的cpu模拟,该项目的目的是开发一个用于分析so的工具
雪    币: 3527
活跃值: 活跃值 (52)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
飞飞fei 活跃值 2019-3-1 15:15
10
0
大佬这个工程用什么工具导入运行呢?eclipse导入org.unicorn-engine,org.capstone-engine下载不下来,求助
雪    币: 389
活跃值: 活跃值 (84)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
铭天星 活跃值 2019-3-1 19:59
11
0
飞飞fei 大佬这个工程用什么工具导入运行呢?eclipse导入org.unicorn-engine,org.capstone-engine下载不下来,求助
见附件
最后于 2019-3-1 20:01 被铭天星编辑 ,原因:
上传的附件:
雪    币: 3527
活跃值: 活跃值 (52)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
飞飞fei 活跃值 2019-3-1 22:08
12
0
非常感谢大佬。keystone和cn.banny也下载不了,幸苦上传下吧
最后于 2019-3-1 22:09 被飞飞fei编辑 ,原因:
雪    币: 45
活跃值: 活跃值 (97)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
endlif 活跃值 1 2019-3-2 01:00
13
0
铭天星 飞飞fei 大佬这个工程用什么工具导入运行呢?eclipse导入org.unicorn-engine,org.capstone-engine下载不下来,求助 ...
keystone和cn.banny也下载不了,幸苦上传下吧  感谢!  
雪    币: 389
活跃值: 活跃值 (84)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
铭天星 活跃值 2019-3-2 07:18
14
0
endlif keystone和cn.banny也下载不了,幸苦上传下吧 感谢!
附件
上传的附件:
雪    币: 4122
活跃值: 活跃值 (76)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
xunbu 活跃值 2019-3-6 16:22
15
0
关注一下!
雪    币: 6476
活跃值: 活跃值 (78)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
无边 活跃值 2019-3-10 05:46
16
0
请问运行出错,是什么情况导致的,已经引入4个prebuilt下的jar 


最后于 2019-3-10 21:14 被无边编辑 ,原因:
雪    币: 389
活跃值: 活跃值 (84)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
铭天星 活跃值 2019-3-10 14:03
17
0
无边 请问运行出错,是什么情况导致的,已经引入4个prebuilt下的jar  ( 环境 ubuntu18.04 + IntelIJ 2018.3.5 )
增加运行参数-Djava.library.path=prebuilt/linux64
雪    币: 6476
活跃值: 活跃值 (78)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
无边 活跃值 2019-3-10 14:16
18
0
铭天星 增加运行参数-Djava.library.path=prebuilt/linux64
运行成功了,3q!!!!
雪    币: 335
活跃值: 活跃值 (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
陈某人 活跃值 2019-3-12 16:50
19
0
加密后的so也可以运行吗
雪    币: 389
活跃值: 活跃值 (84)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
铭天星 活跃值 2019-3-12 19:41
20
0
陈某人 加密后的so也可以运行吗
也可以运行
雪    币: 989
活跃值: 活跃值 (69)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Banyan 活跃值 2019-3-18 09:26
21
0
可以调第一个参数为Context的native方法不
雪    币: 1744
活跃值: 活跃值 (125)
能力值: ( LV9,RANK:160 )
在线值:
发帖
回帖
粉丝
skyun 活跃值 3 2019-3-18 11:56
22
0
不觉明厉.大佬牛逼
雪    币: 389
活跃值: 活跃值 (84)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
铭天星 活跃值 2019-3-18 15:44
23
0
Banyan 可以调第一个参数为Context的native方法不
Object custom = null;
DvmObject context = vm.resolveClass("android/content/Context").newObject(custom);
雪    币: 2881
活跃值: 活跃值 (123)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
FraMeQ 活跃值 2019-3-26 10:13
24
0
这个工程能用Android Studio运行吗?还是得其他的?
雪    币: 2881
活跃值: 活跃值 (123)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
FraMeQ 活跃值 2019-3-26 10:13
25
0
这个工程能用Android Studio运行吗?还是得其他的?
雪    币: 389
活跃值: 活跃值 (84)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
铭天星 活跃值 2019-3-26 11:36
26
0
FraMeQ 这个工程能用Android Studio运行吗?还是得其他的?
这是基于maven的普通java项目。
如需在安卓上运行,涉及到的unicorn, capstone, keystone等需要自行编译方可运行,它是一个分析so的工具,所以不建议安卓上运行
雪    币: 2881
活跃值: 活跃值 (123)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
FraMeQ 活跃值 2019-3-26 13:40
27
0
铭天星 这是基于maven的普通java项目。 如需在安卓上运行,涉及到的unicorn, capstone, keystone等需要自行编译方可运行,它是一个分析so的工具,所以不建议安卓上运行
怎么导入项目到IDEA 或者eclipse,好像这并不是一个工程
雪    币: 389
活跃值: 活跃值 (84)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
铭天星 活跃值 2019-3-26 13:51
28
0
FraMeQ 怎么导入项目到IDEA 或者eclipse,好像这并不是一个工程
是一个标准的maven工程,用idea打开就行了
雪    币: 2881
活跃值: 活跃值 (123)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
FraMeQ 活跃值 2019-3-26 14:26
29
0
铭天星 是一个标准的maven工程,用idea打开就行了
好的,感谢了!
雪    币: 2881
活跃值: 活跃值 (123)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
FraMeQ 活跃值 2019-3-26 14:30
30
0
铭天星 是一个标准的maven工程,用idea打开就行了
还有个问题是如果so有向files 目录读写文件,是不是 就没有办法模拟了
雪    币: 729
活跃值: 活跃值 (38)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
whathhh 活跃值 2019-3-26 15:02
31
0
有模拟api调用么?
雪    币: 389
活跃值: 活跃值 (84)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
铭天星 活跃值 2019-3-26 15:52
32
0
FraMeQ 还有个问题是如果so有向files 目录读写文件,是不是 就没有办法模拟了
看源代码里的FileIO相关,支持读写,参考:emulator.getSyscallHandler().addIOResolve();
雪    币: 389
活跃值: 活跃值 (84)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
铭天星 活跃值 2019-3-26 15:53
33
0
whathhh 有模拟api调用么?
默认支持以下api
libc.so
libcrypto.so
libdl.so
liblog.so
libm.so
libssl.so
libstdcpp.so
libz.so
雪    币: 2881
活跃值: 活跃值 (123)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
FraMeQ 活跃值 2019-3-26 17:19
34
0
铭天星 看源代码里的FileIO相关,支持读写,参考:emulator.getSyscallHandler().addIOResolve();
好的谢谢了!感谢提供这么好的工具
雪    币: 274
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
pancts 活跃值 2019-4-2 22:03
35
0
大佬 这个错误是什么原因 求教
WARN [main] (cn.banny.emulator.linux.ARMSyscallHandler:325) - handleInterrupt intno=2, NR=0, svcNumber=0x10f, PC=unicorn@0xfffe00c0, syscall=null
=> *[       0xfffe00c0]*[0x000c0]*[ 1e ff 2f e1 ]*0xfffe00c0:*bx lr
雪    币: 389
活跃值: 活跃值 (84)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
铭天星 活跃值 2019-4-3 00:45
36
0
pancts 大佬 这个错误是什么原因 求教 WARN [main] (cn.banny.emulator.linux.ARMSyscallHandler:325) - handleInterrupt intno ...
把 so 以及调用代码传上来看下
雪    币: 274
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
pancts 活跃值 2019-4-3 10:11
37
0
铭天星 把 so 以及调用代码传上来看下
这个
上传的附件:
雪    币: 389
活跃值: 活跃值 (84)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
铭天星 活跃值 2019-4-3 12:52
38
1
源码中涉及到的app包名调整为正确的
他的app有验证包的签名hash值
调用sig_1init传16位数组好像不正确,根据实际app调用传什么就传什么
最后于 2019-4-3 12:56 被铭天星编辑 ,原因:
上传的附件:
雪    币: 274
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
pancts 活跃值 2019-4-3 13:26
39
0
明白了 感谢感谢
雪    币: 79
活跃值: 活跃值 (46)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
frozenrain 活跃值 2019-4-3 16:45
40
0
能跑360加固的so么,里面有anti。
雪    币: 389
活跃值: 活跃值 (84)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
铭天星 活跃值 2019-4-3 16:47
41
0
frozenrain 能跑360加固的so么,里面有anti。
还没试过
雪    币: 3
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
mb_hptgxpsi 活跃值 2019-4-30 13:23
42
0


大佬你好,我测试某个so库的时候,出现了崩溃,这种情况应该怎么处理呢?

如果方便的话,不知能否有偿指导一下 *********

---

感谢大神
最后于 2019-5-2 11:05 被mb_hptgxpsi编辑 ,原因:
雪    币: 215
活跃值: 活跃值 (18)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
永恒梦魇 活跃值 2019-5-8 10:47
43
0
楼主开源的项目 和这个 https://github.com/AeonLucid/AndroidNativeEmu 有什么关系或者区别吗?
雪    币: 389
活跃值: 活跃值 (84)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
铭天星 活跃值 2019-5-8 16:03
44
0
永恒梦魇 楼主开源的项目 和这个 https://github.com/AeonLucid/AndroidNativeEmu 有什么关系或者区别吗?
最初学习AndroidNativeEmu,然后用java实现了一套
emulator主要用于本地库的逆向分析
雪    币:
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
天路 活跃值 2019-5-12 17:14
45
0
楼主很热心,想请教一个问题。为什么一个so里同时会有thumb和arm指令,so混淆了的话,怎么区分哪些指令是thumb或arm呢?
雪    币: 389
活跃值: 活跃值 (84)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
铭天星 活跃值 2019-5-12 17:21
46
0
天路 楼主很热心,想请教一个问题。为什么一个so里同时会有thumb和arm指令,so混淆了的话,怎么区分哪些指令是thumb或arm呢?
运行时决定,pc是奇数为 thumb 模式
雪    币:
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
天路 活跃值 2019-5-12 17:31
47
0
铭天星 运行时决定,pc是奇数为 thumb 模式
感谢楼主。
雪    币: 33
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
jiaaij 活跃值 2019-5-14 15:57
48
0
热心的楼主
雪    币: 42
活跃值: 活跃值 (52)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
windson 活跃值 2019-5-17 11:23
49
0
如果是要运行so里未导出的函数,应该是用哪个方法?
雪    币: 389
活跃值: 活跃值 (84)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
铭天星 活跃值 2019-5-17 11:27
50
0
windson 如果是要运行so里未导出的函数,应该是用哪个方法?
eFunc
游客
登录 | 注册 方可回帖
返回