首页
社区
课程
招聘
[原创] Unicorn 编译与 python 绑定
发表于: 2019-8-17 15:56 5186

[原创] Unicorn 编译与 python 绑定

2019-8-17 15:56
5186

一、unicorn的编译
(1) 从官网下载最新的Unicorn源码
https://github.com/unicorn-engine/unicorn
(2)分别解压两份到D:\uc32和D:\uc64
主要出于编译32位和64位等不同版本时,避免配置干扰或重新编译时出现各种不合预期的情况。
(3)根据官方说明,这里使用64位(任意)的msys2
https://github.com/unicorn-engine/unicorn/blob/master/docs/COMPILE-WINDOWS.md

(4)分别启动msys2的32位和64位环境编译版本,确保官方说明的相关命令应该无错执行


(5)再msys2中各环境中进入uc32和uc64




(6)根据官方说明执行相关命令,即可编译完成
应该到msys2的ming32和ming64目录的bin下分别复制响应的依赖DLL到我们需要的路径。


二、python的绑定

(1)分别将【一】的成果,主要是 unicorn.dll和unicorn.lib(当然还有依赖的msys2的动态库)
复制到uc32\bindings\python\prebuilt目录(64位版本复制到响应uc64的目录)
此目录再python setup时会搜索需要的动态库,如果不放置对位置,没法成功。

(2)配置cmd环境适用python32位版本,进入uc32的prebuilt目录,编译whl并安装

python setup.py bdist_wheel
pip install unicorn-1.0.2-py2.py3-none-win32.whl
同理,配置cmd环境适用python64位版本,进入uc64的 prebuilt目录,编译whl并安装
python setup.py bdist_wheel
pip install unicorn-1.0.2-py2.py3-none-win_amd64.whl

注意:为啥不用 egg和easy_install ?
测试Anaconda2的32版本是python 2.7.12版本的,对egg方式没问题
但Anaconda2的64版本是python 2.7.13版本的,ctypes再加载egg缓存路径是适用了unicode,造成错误,为避免错误,毕竟IDA7.X也是64位版本。
这是主要需要适配版本。
以及方便我们的一些其他操作,我们适用whl的方式直接将unicorn装到size-packages中。

python setup.py bdist_egg

当然,我们也可以直接python安装官方的版本,不过官方目前只提供1.0.1版本,一些bug坑还是很难受。
pip install unicorn
附件提供这次编译测试的32位和64位python的whl安装版(分包源于单各附件不超过8M,每个whl大小9M)






[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 4839
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
楼下的来回答
2019-8-17 19:52
0
雪    币: 2466
活跃值: (4561)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
太感谢啦,正好要编译一下,这下方便多了,感谢楼主分享
2019-10-3 09:37
0
游客
登录 | 注册 方可回帖
返回
//