使用Unicorn-engine 续1
续上次,在ubuntu server 14.04交叉编译好后,下一步就是在windows上使用了。
在windows上,我主要是用python进行分析程序,因此我最初安装的是官网上的 unicorn-0.9-python2.7-win32.exe。至于我为什么要用32位的版本,因为64位的版本不能在IDAPython里使用,就像下面:
后来,我干脆统一了IDA是32位的程序,python是32位的,unicorn也是32位的,这样的话在IDAPython里可以使用unicorn了。
安装unicorn-0.9-python2.7-win32.exe会在site-packages目录下存在以下dll:
他们的依赖关系如下(用dependency walker看的):
在python2.7/Lib/site-packages/unicorn.py里也看到定义了这些动态链接库的加载顺序:
下面我来讲下官网上的unicorn-0.9-python2.7-win32.exe有什么bug,导致我去自己编译源码。
问题是这样的:
Example 1:
Error:
Python>uc = Uc(UC_ARCH_X86, UC_MODE_64)
Python>uc.mem_map(0x19000c000,0x1000)
Python>uc.mem_write(0x19000c000, '\x00')
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "C:\Python27\lib\site-packages\unicorn\unicorn.py", line 232, in mem_write
raise UcError(status)
unicorn.unicorn.UcError: Invalid memory write (UC_ERR_WRITE_UNMAPPED)
Correct:
Python>uc.mem_map(0x9000c000,0x1000)
Python>uc.mem_write(0x9000c000, '\x00')
Python>
我使用的是UC_MODE_64,但是发现mem_map的时候地址只能在32位内,大于32位的地址将会在往地址写内容时报错。在测试时发现,如果指令的地址在32位以上,也不能模拟执行,那这个UC_MODE_64就感觉没什么用了。
我在Github上发现,有人已经提出这个问题了,而且给出了对源代码的修改方案,并进行了pull request。链接:https://github.com/unicorn-engine/unicorn/issues/523 代码还没有被合并到主分支里,所以如果直接从github上下载的话,还是有问题的,所以要自己手动的去修改。
编译完成后,按照github上的说明,我主要使用的是unicorn python bindings,在bings/python目录下,运行python setup.py install进行安装。
同时将编译完成的unicorn.dll,/usr/x86_64-w64-mingw32/sys-root/mingw/bin/libglib-2.0-0.dll,/usr/lib/gcc/x86_64-w64-mingw32/4.8/libgcc_s_sjlj-1.dll,/usr/x86_64-w64-mingw32/lib/libwinpthread-1.dll拷贝到Lib/site-packages/unicorn目录下就可以了。他们的依赖关系是这样的:
因此,我们修改下unicorn.py里定义的动态链接库加载顺序。
到此,完工,可以完美使用了,并且解决了bug。附成功截图(在写入时没有报错):
使用Unicorn-engine 续1的更多相关文章
- QLGame 2D Engine编写环境搭建
QLGame 2D Engine编写 (win7环境搭建) 广州麒麟网络工作室,计划制作一款2d game engine,基于opengl(es)平台,暂时支持android,以后考虑支持linux, ...
- Cloud Engine
Cloud Engine:大杀器如何炼成 郑昀 创建于2016/6/18 最后更新于2016/6/19 点击查看我的<如何从零搭建一个技术平台>,这是一个系列.转载时请注明“转载自旁观 ...
- 游戏音频技术备忘 (五)Wwise Unreal Engine 集成代码浅析 二
AkAmbientSound类的实现 Unreal Engine提供了一个基本对象的构造器ObjectInitializer,一般来说用户创建的类总是拥有很多变量,因此 AkAmbientSound ...
- 黑科技抢先尝(续2) - Windows terminal中Powershell Tab的极简美化指南
目录 安装python 安装git 安装powerline字体 主题定制 安装oh-my-posh 查看策略组的执行权限 使用choco 安装终端模拟器 - ConEmu 优化 PowerShell ...
- .Net Core MVC 网站开发(Ninesky) 2.3、项目架构调整(续)-使用配置文件动态注入
上次实现了依赖注入,但是web项目必须要引用业务逻辑层和数据存储层的实现,项目解耦并不完全:另一方面,要同时注入业务逻辑层和数据访问层,注入的服务直接写在Startup中显得非常臃肿.理想的方式是,w ...
- [.NET] C# 知识回顾 - 委托 delegate (续)
C# 知识回顾 - 委托 delegate (续) [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/6046171.html 序 上篇<C# 知识回 ...
- express路由探析(续)
上一篇分析了express的路由机制,这次主要补充一些没有说到的东西. 之前说到,Router是中间件容器,Route是路由中间件,他们各自维护一个stack数组,里面存放layer,layer是封装 ...
- ArcGIS Engine开发之图形查询
图形查询是以用户通过鼠标操作生成的图形几何体为输入条件进行查询的查询,其查询结果为该几何体空间范围内的所有要素.常用的查询方式包括点选.线选.多边形选择.圆形选择和矩形选择等. 相关类与接口 图像查询 ...
- ArcGIS Engine开发之属性查询
属性查询即基于空间数据的属性数据的查询,通过用户提交SQL语言中的where语句定义的查询条件,对属性数据进行搜索,从而得到查询结果的操作. 相关的类与接口 与属性查询功能相关的类主要有QureyFi ...
随机推荐
- markdown 书写代码
近期基于github + hexo 搭建了自己的博客.開始用markdown写博客,推荐 mac 平台用 mou 这个软件或者 vim. 介绍下markdown语法插入代码的规则: 有一种方法是全部代 ...
- [置顶] Android项目组织和代码重用
在Android应用开发过程中,只要涉及两个或以上人的开发,就需要考虑分工和代码的组织和重用问题. 代码重用有三种方式: 1.APK: 2.JAR:通过Libs/ 和Build path集成,缺点是不 ...
- Eclipse上改动Jython代码的Comment颜色
1.问题起因 依据上一篇文章<MonkeyRunner在Windows下的Eclipse开发环境搭建步骤(兼解决网上Jython配置出错的问题)>搭配好Eclipse上面的MonkeyRu ...
- Oracle 中的Pivoting Insert用法
1.标准Insert --单表单行插入 语法: INSERT INTO table [(column1,column2,...)] VALUE (value1,value2,...) ...
- xtrabackup备份恢复测试
http://blog.chinaunix.net/uid-20682026-id-3319204.html
- Tcp 数据对象传输接口对象设计
输入是一个对象inputObj,接口对象.Send(inputObj),对端接收之后解包成outputObj(与inputObj应相同),触发onPackageReceive事件 事件 public ...
- overflow清楚浮动 + 去掉li标签的小圆点
原文链接:http://blog.163.com/qqabc20082006@126/blog/static/22928525201031211212955/ 测试用例: <!DOCTYPE h ...
- 类似QQ侧滑菜单功能实现
之前的那文章简单实现了菜单侧拉功能,但是做不到像QQ那样导航条和tabBar一起移动...之后在网上找资料,有了思路,就自个写了个demo试试水. 先创建QHLMainController控制器,并把 ...
- Win8.1系统下安装nodeJS
Nodejs简介 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境.Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又高效.Node.js ...
- python笔记之itertools模块
python笔记之itertools模块 itertools模块包含创建有效迭代器的函数,可以用各种方式对数据进行循环操作,此模块中的所有函数返回的迭代器都可以与for循环语句以及其他包含迭代器(如生 ...