banner
NEWS LETTER

Intel Pin — Windows&wsl 编译踩坑实录

Scroll down

这几天搞这个编译问题人都快要炸裂了,属实不容易,看到编译就怕😟就当是积累一些编译问题的处理经验吧

先简单说说最后的解决方法:问题出现在3.26版本的pin,dll死活编译不出来,最后换个版本,用vs2019的工作夹解决问题

踩坑1-mingw32-make报错

版本信息3.26-windows,mingw32-make的时候报错

上网搜cut是linux的命令,最初编译so和o文件的时候没有问题,主要问题出在dll,想起来mingw有个make试试能不能解决

1
2
3
4
5
6
7
8
9
10
PS \pin\pin-3.26-98690-g1fc9d60e6-msvc-windows\source\tools\Insmix> mingw32-make.exe
'cut' 不是内部或外部命令,也不是可运行的程序
或批处理文件.
'cut' 不是内部或外部命令,也不是可运行的程序
或批处理文件.
'cut' 不是内部或外部命令,也不是可运行的程序
或批处理文件.
mkdir -p obj-intel64/
命令语法不正确.
mingw32-make: *** [../../../source/tools/Config/makefile.default.rules:50: obj-intel64/] Error 1

踩坑2-linux-wsl无法运行32位

但是尝试用wsl编译so和o也出现了点问题,记录一下,最后的解决方法是在VM虚拟机里使用

可以make,但是里面的pin是32位….运行不了

尝试sudo运行

看到文件夹中有个intel64,里面也有pin,尝试运行,提示缺乏链接库

但是找不到这个库,估计是工具内的

WSL无法运行32位程序

Bash On Windows(WSL)无法运行32Bit程序,报错cannot execute binary file: Exec format error解决办法

如链接中的指示,尝试交给qemu来执行这里的32位, 也可以用qemu-i386-static ./pin 来运行,很可惜又报错了

不想管了(;´д`)ゞ

踩坑3-cl命令找不到-link命令出现问题

后面发现在windows上使用make要提前安装cygwin make(其实文档上有写), 简单介绍就是可原生运行于Windows系统上的POSIX兼容环境,看图就明白了,是不是和linux上很像😀

Untitled

在编译另一个tools时出现的问题,安装好cygwin后要给cygwin的bin配置一下环境变量,重新make报错

没有cl.exe的话就找,这是一个Microsoft C/C++ 编译器,如果有VS的话应该都有,添加到环境变量重新make

link.exe又出错了,就很烦

官档说明

最后还是选择慢慢看文档,官档+chatgpt的更详细解释

重新尝试make

出现这个错误回显是我在学习pin的时候在cpp里加了些中文注释,删掉重新make,终终于于全部通过了qwq,除了会报一个小waring

然鹅,尽管是通过了但是实际还是使用不了

踩坑4-vs2019无法解析的外部指令

看到另一种编译方法就是用文件给的工作空间进行编译

Untitled

打开后把要编译的工具移入项目编译就行,但是这里还是报错了

Untitled

避坑-换版本

当时也不知道咋想的,突然想换个版本测试一下,结果就成功了😅附带几张成功的截图吧,这里可以看到dll文件以及编译出来了

Untitled

下面都是些warning,没报错就行qwq

Untitled

测试一下

Untitled

总结

pin的编译方法大概有下面这几种:

  1. 通过MyPinTool文件夹下的工作空间MyPinTool.vcxproj,在vs内进行编译
  2. 根据官档使用cygwin make以及对应目标架构(x86或x64)的Visual Studio命令提示符进行编译
  3. 换版本😁

References

Pin 3.26 User Guide

cygwin

Tenet 技术路线 (没错,这里也有一些编译问题处理的指导)

其他文章
cover
2022西湖论剑-Review
  • 23/04/02
  • 12:04
  • CTF
cover
N1Junior-Writeup
  • 23/02/01
  • 11:38
  • CTF