-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathstringifier.cpp
More file actions
126 lines (119 loc) · 3.8 KB
/
stringifier.cpp
File metadata and controls
126 lines (119 loc) · 3.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#include "pin.H"
#include <sys/types.h>
#include <iostream>
#include <fstream>
#include <string>
#include <map>
std::map<ADDRINT, std::string> syscallNames;
std::map<REG, std::string> registerNames;
void StringifierSetup() {
ifstream file("/usr/include/x86_64-linux-gnu/asm/unistd_64.h");
if(file.is_open()) {
string line;
while(getline(file, line)) {
if(line.find("define __NR") != string::npos) {
line = line.substr(13);
syscallNames[std::stoi(line.substr(line.find(" ")))] = line.substr(0, line.find(" "));
}
}
}
file.close();
registerNames[REG_RDI] = "RDI";
registerNames[REG_EDI] = "EDI";
registerNames[REG_DI] = "DI";
registerNames[REG_DIL] = "DIL";
registerNames[REG_RSI] = "RSI";
registerNames[REG_ESI] = "ESI";
registerNames[REG_SI] = "SI";
registerNames[REG_SIL] = "SIL";
registerNames[REG_RBX] = "RBX";
registerNames[REG_EBX] = "EBX";
registerNames[REG_BX] = "BX";
registerNames[REG_BL] = "BL";
registerNames[REG_BH] = "BH";
registerNames[REG_RDX] = "RDX";
registerNames[REG_EDX] = "EDX";
registerNames[REG_DX] = "DX";
registerNames[REG_DL] = "DL";
registerNames[REG_DH] = "DH";
registerNames[REG_RCX] = "RCX";
registerNames[REG_ECX] = "ECX";
registerNames[REG_CX] = "CX";
registerNames[REG_CL] = "CL";
registerNames[REG_CH] = "CH";
registerNames[REG_RAX] = "RAX";
registerNames[REG_EAX] = "EAX";
registerNames[REG_AX] = "AX";
registerNames[REG_AL] = "AL";
registerNames[REG_AH] = "AH";
registerNames[REG_R8] = "R8";
registerNames[REG_R8D] = "R8D";
registerNames[REG_R8W] = "R8W";
registerNames[REG_R8B] = "R8B";
registerNames[REG_R9] = "R9";
registerNames[REG_R9D] = "R9D";
registerNames[REG_R9W] = "R9W";
registerNames[REG_R9B] = "R9B";
registerNames[REG_R10] = "R10";
registerNames[REG_R10D] = "R10D";
registerNames[REG_R10W] = "R10W";
registerNames[REG_R10B] = "R10B";
registerNames[REG_R11] = "R11";
registerNames[REG_R11D] = "R11D";
registerNames[REG_R11W] = "R11W";
registerNames[REG_R11B] = "R11B";
registerNames[REG_R12] = "R12";
registerNames[REG_R12D] = "R12D";
registerNames[REG_R12W] = "R12W";
registerNames[REG_R12B] = "R12B";
registerNames[REG_R13] = "R13";
registerNames[REG_R13D] = "R13D";
registerNames[REG_R13W] = "R13W";
registerNames[REG_R13B] = "R13B";
registerNames[REG_R14] = "R14";
registerNames[REG_R14D] = "R14D";
registerNames[REG_R14W] = "R14W";
registerNames[REG_R14B] = "R14B";
registerNames[REG_R15] = "R15";
registerNames[REG_R15D] = "R15D";
registerNames[REG_R15W] = "R15W";
registerNames[REG_R15B] = "R15B";
registerNames[REG_RBP] = "RBP";
registerNames[REG_EBP] = "EBP";
registerNames[REG_BP] = "BP";
registerNames[REG_BPL] = "BPL";
registerNames[REG_RSP] = "RSP";
registerNames[REG_ESP] = "ESP";
registerNames[REG_SP] = "SP";
registerNames[REG_SPL] = "SPL";
registerNames[REG_EIP] = "EIP";
registerNames[REG_RIP] = "RIP";
registerNames[REG_IP] = "IP";
registerNames[REG_RFLAGS] = "RFLAGS";
registerNames[REG_EFLAGS] = "EFLAGS";
registerNames[REG_FLAGS] = "FLAGS";
registerNames[REG_SI] = "SI";
registerNames[REG_DI] = "DI";
registerNames[REG_XMM0] = "XMM0";
registerNames[REG_XMM1] = "XMM1";
registerNames[REG_XMM2] = "XMM2";
registerNames[REG_XMM3] = "XMM3";
registerNames[REG_XMM4] = "XMM4";
registerNames[REG_XMM5] = "XMM5";
registerNames[REG_XMM6] = "XMM6";
registerNames[REG_XMM7] = "XMM7";
registerNames[REG_XMM8] = "XMM8";
registerNames[REG_XMM9] = "XMM9";
registerNames[REG_XMM10] = "XMM10";
registerNames[REG_XMM11] = "XMM11";
registerNames[REG_XMM12] = "XMM12";
registerNames[REG_XMM13] = "XMM13";
registerNames[REG_XMM14] = "XMM14";
registerNames[REG_XMM15] = "XMM15";
}
std::string SyscallName(ADDRINT num) {
return syscallNames[num];
}
std::string RegisterName(REG reg) {
return registerNames[reg];
}