例如我们有一个 c 源程序
/*************************************************************************
> File Name: ddg.c
> Author:
> Mail:
> Created Time: 2017年08月24日 星期四 10时52分31秒
************************************************************************/
#include<stdio.h>
#define Version_Num "1.122"
#define Version_num 122
const int v_num = 1222;
const char * ver_num = "1.1.1222";
char *x = "Hello world";
int main(){
int a = 112;
a += 12;
printf("Version is : %s, %d",x,a);
}
void print1 (){
printf("print1 %s",Version_Num);
}
void print2(){
printf("print2 %d",Version_num);
}
void print3(){
printf("print3 %d ",v_num);
}
void print4(){
printf("print4 %s",ver_num);
}
编译运行(本人使用了交叉编译,生成ARM平台下可执行文件)
然后使用所写脚本即可还原函数调用的参数,不过 脚本的输入是 printf的格式化字符串 例如:“print3 %d”
ida脚本如下:
#!/usr/bin/env python
# coding=utf-8
from idc import *
from idaapi import *
import idautils
class AnayBinFil(object):
def __init__(self):
list