首页 > 其他分享 >Intel Pin初探

Intel Pin初探

时间:2024-03-13 14:25:31浏览次数:20  
标签:exe Intel pin linux Pin Desktop 初探 home hf

1、在/home/hf/Desktop/pin/pin-3.30-98830-g1d7b601b3-gcc-linux/source/tools/ManualExamples/目录下写自己的pintools

去到该目录
cd /home/hf/Desktop/pin/pin-3.30-98830-g1d7b601b3-gcc-linux/source/tools/ManualExamples/
编写pintools
vim Mycmp.cpp

下面是Mycmp.cpp内容

#include "pin.H"
#include <iostream>
#include <fstream>

std::ofstream outfile;

VOID Instruction(INS ins, VOID *v)
{
    if (INS_Opcode(ins) == XED_ICLASS_CMP)
    {
        outfile << "CMP Instruction at address: " << INS_Address(ins) << std::endl;
        for (UINT32 i = 0; i < INS_OperandCount(ins); ++i)
        {
            if (INS_OperandIsReg(ins, i))
            {
                outfile << "Operand " << i << ": Register" << std::endl;
            }
            else if (INS_OperandIsMemory(ins, i))
            {
                outfile << "Operand " << i << ": Memory" << std::endl;
            }
            else if (INS_OperandIsImmediate(ins, i))
            {
                outfile << "Operand " << i << ": Immediate Value: " << INS_OperandImmediate(ins, i) << std::endl;
            }
        }
        outfile << std::endl;
    }
}

VOID Fini(INT32 code, VOID *v)
{
    outfile.close();
}

int main(int argc, char *argv[])
{
    // Initialize Pin
    PIN_InitSymbols();
    if (PIN_Init(argc, argv))
    {
        return -1;
    }

    // Open output file
    outfile.open("cmp_operations.txt");

    // Register Instruction to be called to instrument instructions
    INS_AddInstrumentFunction(Instruction, 0);

    // Register Fini to be called when the application exits
    PIN_AddFiniFunction(Fini, 0);

    // Start the program, never returns
    PIN_StartProgram();

    return 0;
}

2、生成pintool

当前在目录下
输入
make obj-intel64/Mycmp.so TARGET=intel64

这时可以在obj-intel64目录下查看到Mycmp.so

image

3、使用Pintool

我的mytools.so在/home/hf/Desktop/pin/pin-3.30-98830-g1d7b601b3-gcc-linux/source/tools/ManualExamples/obj-intel64/,要分析的service.exe在/home/hf/Desktop/pin/

去目录下
cd /home/hf/Desktop/pin/pin-3.30-98830-g1d7b601b3-gcc-linux/
使用命令执行pintool
./pin -t /home/hf/Desktop/pin/pin-3.30-98830-g1d7b601b3-gcc-linux/source/tools/ManualExamples/obj-intel64/Mycmp.so -- /home/hf/Desktop/pin/service.exe
这个命令的格式为 pin -t <pintool目录绝对路径> -- <要分析的程序的绝对路径>

上面的方法会将结果输出到命令行,我们还可以将结果输出到一个文本文件中,只需在命令后加上 > output.txt

./pin -t /home/hf/Desktop/pin/pin-3.30-98830-g1d7b601b3-gcc-linux/source/tools/ManualExamples/obj-intel64/Mycmp.so -- /home/hf/Desktop/pin/service.exe > output.txt

注意:此时可能没有操作server.exe的权限

使用命令查看server.exe的权限
ls -l /home/hf/Desktop/pin/Server.exe
如果输出中没有执行权限(x 权限),可以使用 chmod 命令添加执行权限:
chmod +x /home/hf/Desktop/pin/Server.exe

标签:exe,Intel,pin,linux,Pin,Desktop,初探,home,hf
From: https://www.cnblogs.com/haof31/p/18070531

相关文章

  • 从CF1941D与1741E初探可达性DP
    Problem-D-Codeforces用记忆化搜索过的,然而DP能快300ms记忆化搜索|\(\texttt{set}\)模拟核心思路一致,都是通过定义一个状态,即在第t次到达第now点来去重剪枝记忆化搜索intn,m,x;std::vector<std::pair<int,char>>step;std::set<int>S;intgetClock(intx,......
  • Rust 构建开源 Pingora 框架可以与nginx媲美
    一、概述Cloudflare为何弃用Nginx,选择使用Rust重新构建新的代理Pingora框架。Cloudflare成立于2010年,是一家领先的云服务提供商,专注于内容分发网络(CDN)和分布式域名解析。它提供一系列安全和性能优化服务,包括防火墙、DDoS防护、SSL/TLS加密和威胁分析。二、Pingora......
  • 第五十六回 徐宁教使钩镰枪 宋江大破连环马-飞桨图像分类套件PaddleClas初探
    宋江等人学会了钩镰枪,大胜呼延灼。呼延灼损失了很多人马,不敢回京,一个人去青州找慕容知府。一天在路上住店,马被桃花山的人偷走了,于是到了青州,带领官兵去打莲花山。莲花山的周通打不过呼延灼,于是李忠去请二龙山的来帮忙。杨志、鲁智深和武松三个都来帮忙,呼延灼打不过,只好退回青......
  • CF343E Pumping Stations 题解
    题意:给定一张无向带权图,求一个排列\(p\)使得\(\sum_{i=2}^n\operatorname{mincut}(p_{i-1},p_i)\)最大。输出一种方案。\(n\le200,m\le1000\)。思路:首先这种最小割相关的肯定是最小割树,建树需要\(O(n^3m)\),由于\(Dinic\)实际上跑不满,所以时间完全够。然后考......
  • OMAP-L138 + FPGA开发板(Pin-To-Pin国产FPGA)
    XQ138F-EVM是广州星嵌电子科技有限公司基于TIOMAP-L138(定点/浮点DSPC674x+ARM9)+FPGA处理器研制的开发板;OMAP-L138选用TI德州仪器的TMS320C6748+ARM926EJ-S异构双核处理器,主频456MHz,高达3648MIPS和2746MFLOPS的运算能力;FPGA采用中科亿海微eHiChip6家族EQ6......
  • 【SLAM】Soomthing And Mapping技术参考
    TectonicSAM笔记SAM(SmoothingAndMapping)是SLAM简化而提升效率的概念。SAM也是SFM(StructureFromMotion)的关键技术。TectonicSAM,采用因子图模型,优化方法估计状态(地图与位姿参数),本文将submap类比于大陆板块(Tectonic),对submap内部节点改变不明显,submap之间可大幅度调......
  • 阿里通义千问大模型初探
    参考文档:https://help.aliyun.com/zh/dashscope/developer-reference/quick-start一、创建API-KEY控制台地址:https://dashscope.console.aliyun.com/apiKey二、使用javaSDK接入全量输出:根据用户的prompt,一次性将结果输出给用户增量输出:根据用户的prompt,一个字一个字的输出......
  • 简单的 ping 测试
     以下命令将模拟网络负载,相当于机器人由FCI控制的场景:sudoping<fci-ip>-i0.001-D-c10000-s1200示例输出:PING<fci-ip>1200(1228)bytesofdata.[1500982522.977579]1208bytesfrom<fci-ip>:icmp_seq=1ttl=64time=0.279ms[1500982522.978423]......
  • 简单的 ping 测试
    以下命令将模拟网络负载,相当于机器人由FCI控制的场景:sudoping<fci-ip>-i0.001-D-c10000-s1200示例输出:PING<fci-ip>1200(1228)bytesofdata.[1500982522.977579]1208bytesfrom<fci-ip>:icmp_seq=1ttl=64time=0.279ms[1500982522.978423]1208......
  • 初始配置:IntelliJ Android无法运行项目并报错Error: Module not specified
    最近重拾android,想趁复试前搞一个东西出来,顺便给毕设做好准备。写代码前得让IDEA把初始的空项目在虚拟机上运行一下,看看开发环境是不是有什么问题,果然每次过一段时间重开,哪怕我上一次关闭时啥也没碰,总得出点配置上的小问题。Error:Modulenotspecified未指定模块错误,但点......