首页
论坛
专栏
课程

[原创]使用Unicorn Engine分析so

2019-3-1 00:08 13850

[原创]使用Unicorn Engine分析so

2019-3-1 00:08
13850

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.




[公告][征集寄语] 看雪20周年年会(12.28上海) | 感恩有你,一路同行

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


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


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

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

---

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