Skip to content

Commit 5b50978

Browse files
committed
Schmoocon
0 parents  commit 5b50978

33 files changed

+5345
-0
lines changed

IMG.cpp

Lines changed: 213 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,213 @@
1+
/*
2+
Only Python_IMG_RegsymHead left
3+
Need SYM first.
4+
5+
New in 2.14 (not implemented yet):
6+
LEVEL_PINCLIENT::IMG_NumRegions (IMG img)
7+
LEVEL_PINCLIENT::IMG_RegionHighAddress (IMG img, UINT32 n)
8+
LEVEL_PINCLIENT::IMG_RegionLowAddress (IMG img, UINT32 n)
9+
10+
*/
11+
12+
#include </usr/include/python2.7/Python.h>
13+
#include "pin.H"
14+
#include <strings.h>
15+
#include <stdlib.h>
16+
#include "IMG.h"
17+
18+
PyObject* Python_IMG_Next(PyObject* self, PyObject* args) {
19+
PyObject* img;
20+
PyArg_ParseTuple(args, "O", &img);
21+
22+
IMG* img_object = (IMG*) malloc(sizeof(IMG));
23+
*img_object = IMG_Next(*(IMG*)PyInt_AsLong(img));
24+
return Py_BuildValue("L", img_object);
25+
}
26+
27+
PyObject* Python_IMG_Prev(PyObject* self, PyObject* args) {
28+
PyObject* img;
29+
PyArg_ParseTuple(args, "O", &img);
30+
31+
IMG* img_object = (IMG*) malloc(sizeof(IMG));
32+
*img_object = IMG_Prev(*(IMG*)PyInt_AsLong(img));
33+
return Py_BuildValue("L", img_object);
34+
}
35+
36+
PyObject* Python_IMG_Invalid(PyObject* self, PyObject* args) {
37+
IMG* img_object = (IMG*) malloc(sizeof(IMG));
38+
*img_object = IMG_Invalid();
39+
return Py_BuildValue("L", img_object);
40+
}
41+
42+
PyObject* Python_IMG_Valid(PyObject* self, PyObject* args) {
43+
PyObject* img;
44+
PyArg_ParseTuple(args, "O", &img);
45+
IMG img_object = *(IMG*)PyInt_AsLong(img);
46+
if (IMG_Valid(img_object)) {
47+
return Py_BuildValue("O", Py_True);
48+
}
49+
50+
return Py_BuildValue("O", Py_False);
51+
}
52+
53+
PyObject* Python_IMG_SecHead(PyObject* self, PyObject* args) {
54+
PyObject* img;
55+
PyArg_ParseTuple(args, "O", &img);
56+
IMG img_object = *(IMG*)PyInt_AsLong(img);
57+
SEC* sec = (SEC*) malloc(sizeof(SEC));
58+
*sec = IMG_SecHead(img_object);
59+
return Py_BuildValue("L", sec);
60+
}
61+
62+
PyObject* Python_IMG_SecTail(PyObject* self, PyObject* args) {
63+
PyObject* img;
64+
PyArg_ParseTuple(args, "O", &img);
65+
IMG img_object = *(IMG*)PyInt_AsLong(img);
66+
SEC* sec = (SEC*) malloc(sizeof(SEC));
67+
*sec = IMG_SecTail(img_object);
68+
return Py_BuildValue("L", sec);
69+
}
70+
71+
PyObject* Python_IMG_RegsymHead(PyObject* self, PyObject* args) {
72+
PyObject* img;
73+
PyArg_ParseTuple(args, "O", &img);
74+
// IMG img_object = *(IMG*)PyInt_AsLong(img);
75+
return Py_BuildValue("O", Py_True);
76+
}
77+
78+
PyObject* Python_IMG_Entry(PyObject* self, PyObject* args) {
79+
PyObject* img;
80+
PyArg_ParseTuple(args, "O", &img);
81+
IMG img_object = *(IMG*)PyInt_AsLong(img);
82+
return Py_BuildValue("L", IMG_Entry(img_object));
83+
}
84+
85+
PyObject* Python_IMG_Name(PyObject* self, PyObject* args) {
86+
PyObject* img;
87+
PyArg_ParseTuple(args, "O", &img);
88+
IMG img_object = *(IMG*)PyInt_AsLong(img);
89+
return Py_BuildValue("s", IMG_Name(img_object).c_str());
90+
}
91+
92+
PyObject* Python_IMG_Gp(PyObject* self, PyObject* args) {
93+
PyObject* img;
94+
PyArg_ParseTuple(args, "O", &img);
95+
IMG img_object = *(IMG*)PyInt_AsLong(img);
96+
return Py_BuildValue("L", IMG_Gp(img_object));
97+
}
98+
99+
PyObject* Python_IMG_LoadOffset(PyObject* self, PyObject* args) {
100+
PyObject* img;
101+
PyArg_ParseTuple(args, "O", &img);
102+
IMG img_object = *(IMG*)PyInt_AsLong(img);
103+
return Py_BuildValue("L", IMG_LoadOffset(img_object));
104+
}
105+
106+
PyObject* Python_IMG_LowAddress(PyObject* self, PyObject* args) {
107+
PyObject* img;
108+
PyArg_ParseTuple(args, "O", &img);
109+
IMG img_object = *(IMG*)PyInt_AsLong(img);
110+
return Py_BuildValue("L", IMG_LowAddress(img_object));
111+
}
112+
113+
PyObject* Python_IMG_HighAddress(PyObject* self, PyObject* args) {
114+
PyObject* img;
115+
PyArg_ParseTuple(args, "O", &img);
116+
IMG img_object = *(IMG*)PyInt_AsLong(img);
117+
return Py_BuildValue("L", IMG_HighAddress(img_object));
118+
}
119+
120+
PyObject* Python_IMG_StartAddress(PyObject* self, PyObject* args) {
121+
PyObject* img;
122+
PyArg_ParseTuple(args, "O", &img);
123+
IMG img_object = *(IMG*)PyInt_AsLong(img);
124+
return Py_BuildValue("L", IMG_StartAddress(img_object));
125+
}
126+
127+
PyObject* Python_IMG_SizeMapped(PyObject* self, PyObject* args) {
128+
PyObject* img;
129+
PyArg_ParseTuple(args, "O", &img);
130+
IMG img_object = *(IMG*)PyInt_AsLong(img);
131+
return Py_BuildValue("L", IMG_SizeMapped(img_object));
132+
}
133+
134+
PyObject* Python_IMG_Type(PyObject* self, PyObject* args) {
135+
PyObject* img;
136+
PyArg_ParseTuple(args, "O", &img);
137+
IMG img_object = *(IMG*)PyInt_AsLong(img);
138+
return Py_BuildValue("L", IMG_Type(img_object));
139+
}
140+
141+
PyObject* Python_IMG_IsMainExecutable(PyObject* self, PyObject* args) {
142+
PyObject* img;
143+
PyArg_ParseTuple(args, "O", &img);
144+
IMG img_object = *(IMG*)PyInt_AsLong(img);
145+
if (IMG_IsMainExecutable(img_object)) {
146+
return Py_BuildValue("O", Py_True);
147+
}
148+
149+
return Py_BuildValue("O", Py_False);
150+
}
151+
152+
PyObject* Python_IMG_IsStaticExecutable(PyObject* self, PyObject* args) {
153+
PyObject* img;
154+
PyArg_ParseTuple(args, "O", &img);
155+
IMG img_object = *(IMG*)PyInt_AsLong(img);
156+
if (IMG_IsStaticExecutable(img_object)) {
157+
return Py_BuildValue("O", Py_True);
158+
}
159+
160+
return Py_BuildValue("O", Py_False);
161+
}
162+
163+
PyObject* Python_IMG_Id(PyObject* self, PyObject* args) {
164+
PyObject* img;
165+
PyArg_ParseTuple(args, "O", &img);
166+
IMG img_object = *(IMG*)PyInt_AsLong(img);
167+
return Py_BuildValue("L", IMG_Id(img_object));
168+
}
169+
170+
PyObject* Python_IMG_FindImgById(PyObject* self, PyObject* args) {
171+
PyObject* id;
172+
PyArg_ParseTuple(args, "O", &id);
173+
IMG* img = (IMG*) malloc(sizeof(IMG));
174+
*img = IMG_FindImgById((UINT32) PyInt_AsLong(id));
175+
return Py_BuildValue("L", img);
176+
}
177+
178+
PyObject* Python_IMG_FindByAddress(PyObject* self, PyObject* args) {
179+
PyObject* address;
180+
PyArg_ParseTuple(args, "O", &address);
181+
IMG* img = (IMG*) malloc(sizeof(IMG));
182+
*img = IMG_FindByAddress((ADDRINT) PyInt_AsLong(address));
183+
return Py_BuildValue("L", img);
184+
}
185+
186+
PyObject* Python_IMG_Open(PyObject* self, PyObject* args) {
187+
PyObject* filename;
188+
PyArg_ParseTuple(args, "O", &filename);
189+
IMG* img = (IMG*) malloc(sizeof(IMG));
190+
*img = IMG_Open(PyString_AsString(filename));
191+
return Py_BuildValue("L", img);
192+
}
193+
194+
PyObject* Python_IMG_Close(PyObject* self, PyObject* args) {
195+
PyObject* img;
196+
PyArg_ParseTuple(args, "O", &img);
197+
IMG img_object = *(IMG*)PyInt_AsLong(img);
198+
IMG_Close(img_object);
199+
return Py_BuildValue("O", Py_True);
200+
}
201+
202+
PyObject* Python_APP_ImgHead(PyObject* self, PyObject* args) {
203+
IMG* img = (IMG*) malloc(sizeof(IMG));
204+
*img = APP_ImgHead();
205+
return Py_BuildValue("L", img);
206+
}
207+
208+
PyObject* Python_APP_ImgTail(PyObject* self, PyObject* args) {
209+
IMG* img = (IMG*) malloc(sizeof(IMG));
210+
*img = APP_ImgTail();
211+
return Py_BuildValue("L", img);
212+
}
213+

IMG.h

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
#ifndef A_H
2+
#define A_H
3+
4+
// void add_hook(PyObject*** hooks, PyObject* new_hook);
5+
// PyObject** hooks_list = *hooks;
6+
// if (hooks_list == NULL) {
7+
// hooks_list = (PyObject**) malloc(sizeof(PyObject*)*2);
8+
// hooks_list[0] = new_hook;
9+
// hooks_list[1] = NULL;
10+
// } else {
11+
// int hook_count;
12+
// for(hook_count=0; hooks_list[hook_count]; hook_count++);
13+
// hooks_list = (PyObject**) realloc(hooks_list, sizeof(PyObject*)*(hook_count+2));
14+
// hooks_list[hook_count] = new_hook;
15+
// hooks_list[hook_count+1] = NULL;
16+
// }
17+
18+
// *hooks = hooks_list;
19+
// }
20+
// ------------------- auto generated
21+
PyObject* Python_IMG_Next(PyObject* self, PyObject* args);
22+
PyObject* Python_IMG_Prev(PyObject* self, PyObject* args);
23+
PyObject* Python_IMG_Invalid(PyObject* self, PyObject* args);
24+
PyObject* Python_IMG_Valid(PyObject* self, PyObject* args);
25+
PyObject* Python_IMG_SecHead(PyObject* self, PyObject* args);
26+
PyObject* Python_IMG_SecTail(PyObject* self, PyObject* args);
27+
PyObject* Python_IMG_RegsymHead(PyObject* self, PyObject* args);
28+
PyObject* Python_IMG_Entry(PyObject* self, PyObject* args);
29+
PyObject* Python_IMG_Name(PyObject* self, PyObject* args) ;
30+
PyObject* Python_IMG_Gp(PyObject* self, PyObject* args) ;
31+
PyObject* Python_IMG_LoadOffset(PyObject* self, PyObject* args) ;
32+
PyObject* Python_IMG_LowAddress(PyObject* self, PyObject* args);
33+
PyObject* Python_IMG_HighAddress(PyObject* self, PyObject* args);
34+
PyObject* Python_IMG_StartAddress(PyObject* self, PyObject* args);
35+
PyObject* Python_IMG_SizeMapped(PyObject* self, PyObject* args);
36+
PyObject* Python_IMG_Type(PyObject* self, PyObject* args);
37+
PyObject* Python_IMG_IsMainExecutable(PyObject* self, PyObject* args);
38+
PyObject* Python_IMG_IsStaticExecutable(PyObject* self, PyObject* args);
39+
PyObject* Python_IMG_Id(PyObject* self, PyObject* args);
40+
PyObject* Python_IMG_FindImgById(PyObject* self, PyObject* args);
41+
PyObject* Python_IMG_FindByAddress(PyObject* self, PyObject* args);
42+
PyObject* Python_IMG_AddInstrumentFunction(PyObject* self, PyObject* args);
43+
PyObject* Python_IMG_AddUnloadFunction(PyObject* self, PyObject* args);
44+
PyObject* Python_IMG_Open(PyObject* self, PyObject* args);
45+
PyObject* Python_IMG_Close(PyObject* self, PyObject* args);
46+
PyObject* Python_APP_ImgHead(PyObject* self, PyObject* args);
47+
PyObject* Python_APP_ImgTail(PyObject* self, PyObject* args);
48+
49+
#endif

0 commit comments

Comments
 (0)