下载ida,注意要安装python2.7,按照完毕后可以直接进行反编译。之所以先使用C/C++作为第一个程序,是因为win程序可以简单的理解,当然如果没有对应的环境可以略过这一步,权当做是伪代码即可。
首先在c\c++编译环境中敲入以下代码,然后debug
# include<stdio.h>
char char_average(chararray[],int count)
{
int i;
char average;
average = 0;
for(i = 0 ; i< count ;i++)
average += array[i];
average /= count;
return average;
}
int int_average(intarray[],int count)
{
int i;
int average;
average = 0;
for(i = 0 ; i< count ;i++){
average += array[i];
}
average /= count;
return average;
}
int main(){
char chars[] = {1,2,3,4,5};
int ints[] = {1,2,3,4,5};
printf("charsaverage = %d\n",char_average(chars,sizeof(chars)));
printf("intsaverage = %d\n",int_average(ints,sizeof(ints)));
getchar();
}
以下是结果,,错误的主要原因因为是应该在调用函数int_average的时候,应该int_average(ints,sizeof(ints)/sizeof(ints[0])),由于char占1个字节,而int不是,32位机器上面占有4位,结果出错,下面继续分析。
打开ida,然后open打开debug文件下的exe文件
然后选择第一个
一直ok到底,
在functions window找到要查看的函数int_average
然后右键添加断点
然后在本地进行调试,选择windbg debuger,
之后按工具栏的绿色start按钮或者F9快捷键,
到断点区域点击
从而展开
点击进入就会发现进入了main函数就看到了原始参数数据,
然后选中想要查看的行的数据,点击
即可查看对应变量的值,然后一切就ok了~