我想更改在具有相同地址的指令之前的时间插入的功能。
我该怎么办?
例如。
int count=10;
void insert_check_code(INS ins){
if(INS_Address(ins) == tmpaddr)
if(count > 5){
INS_InsertCall(ins,IPOINT_BEFORE,count--func)
}else {
INS_InsertCall(ins,IPOINT_BEFORE,count_printfunc)
}
}
在上面的示例中,计数值恢复为其原始值,我想更改在具有相同地址的指令之前的时间插入的函数。
我该怎么办?
例如。
int count=10;
void insert_check_code(INS ins){
if(INS_Address(ins) == tmpaddr)
if(count > 5){
INS_InsertCall(ins,IPOINT_BEFORE,count--func)
}else {
INS_InsertCall(ins,IPOINT_BEFORE,count_printfunc)
}
}
在上面的示例中,计数值返回到其原始值。
目标程序是一个简单的服务器程序,因此我们正在使用fork()函数。 是否需要在Pintool中为使用fork()函数的程序编写特殊说明?值。
答案 0 :(得分:0)
将if-else
代码移至其自己的函数中,然后插入该函数:
void conditional_func() {
if(count > 5){
count_decrement_func()
} else {
count_printfunc()
}
}
void insert_check_code(INS ins) {
INS_InsertCall(ins,IPOINT_BEFORE,conditional_func)
}
关于fork()
,这取决于您fork()
进行操作时想要的行为。
请记住,如果应用程序是多线程的,则count
访问必须同步。