1. 主页 > vs安装问题 > VS2013安装问题 >

VS2013 Build Ponce

用VS2013生成Ponce

需求

Ponce、Triton是什么不再赘述
Ponce项目中给出了VS2013工程,用于编译Ponce及其依赖的Triton项目
但是Triton一直在更新,Ponce源码使用的Triton是hash为e23914a2d4c0e48472b9d15dedeedc7f8c8cb002的版本,现在需要git clone该版本,并用Ponce给出的VS2013工程,编译Triton和Ponce

实验记录

  • 需要完整阅读实验记录,才能找到具体的实现方法,错误的尝试也记录了

1、git clone
在链接看到的Triton库中发现版本信息v0.4,并查找到v0.4是tag,只需git clone该tag即可。
参考https://stackoverflow.com/questions/791959/download-a-specific-tag-with-git,并不懂checkout是怎个意思,但是git clone -b “v0.4” https://github.com/mxmssh/Triton.git。然而并不是这样的。。。
由于看的不仔细,实际上这个hash对应的是PonceLatestSupported分支,只需要git clone该分支就行了。。。
2、build Triton,出现编译器内部错误
这里写图片描述
该问题在Ponce项目下已提问https://github.com/illera88/Ponce/issues/87。等待回复中。
3、build Ponce
生成解决方案时,和Triton一样,boost项目中出现了编译器内部错误。
4、出现编译器内部错误
根据MSDN的说明C1001往往与编译器优化有关,报错时的提示信息也显示是优化编译器的错误
这里写图片描述
遂进行如下探索:(均在项目-属性中)
(1)关闭C\C++优化
这里写图片描述
优化选择“已禁用”。结果依然报错。
(2)生成事件-预先生成事件-在生成中使用-否(默认也是否)
预链接事件-在生成中使用-否(默认是)
还是不行。
参考了一些网页,发现这个优化只发生与release版本中,debug版本中没有优化。右击解决方案,属性,将release改成debug。
这里写图片描述
这里写图片描述
解决了C1001的问题。
但是报出一大堆头文件找不到的错误,究其原因,是Triton和IDA无法引用。
同样的方法build triton,还是一堆头文件找不到。
5、Triton编译
Build Triton应该能够得到lib这种东西,因为Triton在Ponce中是以库的形式出现的。
而且那些找不到的头文件再src中都有,所以让VS能找到他们就行了。
首先将Ponce\Triton\src\libtriton\includes加入到Triton的VC++目录-包含目录中,一堆头文件找不到已经没有了。
然后发现boost的库都找不到,所以继续添加,然而添加之后,优化编译器的C1001错误又出现了,果然该还的最终还是要还。。。这个问题个人认为完全是由于boost和VS2013可能存在不兼容的地方产生了。然而。。。并不知道该怎么弄。
6、解决C1001
新的一天,有了新的思路
问题出在boost中,用boost和vs2013 C1001组合搜索,参考http://blog.csdn.net/clever101/article/details/78460331、http://www.cnblogs.com/xuhui24/p/6652687.html,得知需要安装VS2013 update5,又参考https://jingyan.baidu.com/article/3c48dd349a9616e10be3583d.html,然而无良微软官网搜索VS2013 update5基本都是404,例如https://www.microsoft.com/zh-cn/download/details.aspx?id=48129,然而发现在VS2013的通知里面有提示,可以安装update5,直接下载安装。
安装后重新build。
Triton编译成功!

6、关于Ponce的本质问题
作为一个IDA项目的源码,到底应该如何生成plw文件?
目前还不知道Ponce是怎么生成plw和p64文件的,但是,Ponce项目设置了预先生成事件和后期生成事件。
经过前面的折腾,Ponce的编译比较正常,选择对应的解决方案配置,能够正常生成插件文件,但是会报一个错误
这里写图片描述
这个实际上是后期生成事件的命令行没有正确执行,Ponce项目中预置的命令行为
copy /Y $(TargetPath) "C:\Program Files (x86)\IDA 6.95\plugins"
TargetPath是最终文件生成的位置,为啥这个copy命令出错了呢,实际上到此Ponce已经可以正常编译了,也就是说,我们已经可以改Ponce了,但是还是把这个错误解决一下。
这里写图片描述
能够看到这个命令是没有问题的,那么应该是权限的问题了,因为非管理员模式往C盘里写文件会提示权限不足。这个问题完全没有影响,手工复制到IDA目录中就行了。就此,Ponce项目已经能够完整编译了。
[update at 2018.03.08] 以管理员方式启动VS,能够成功复制。

本文由VS软件圈(vssoft.net)发布,不代表VS软件圈立场,转载联系作者并注明出处:https://vssoft.net/vsazwt/VS2013anzhuangwenti/2020/0727/5891.html

联系我们

在线咨询:点击这里给我发消息

微信号:PREEE8

工作日:9:30-18:30,节假日休息