[Android]安全第一步,使用IDA初步调试一个c/c++的exe文件
2016-11-23 20:11
337 查看
下载ida,注意要安装python2.7,按照完毕后可以直接进行反编译。之所以先使用C/C++作为第一个程序,是因为win程序可以简单的理解,当然如果没有对应的环境可以略过这一步,权当做是伪代码即可。
首先在c\c++编译环境中敲入以下代码,然后debug
以下是结果,
,错误的主要原因因为是应该在调用函数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了~
首先在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了~
相关文章推荐
- 使用IDA远程调试Android文件
- 使用IDA动态调试android so文件时的几个坑
- 使用Ida 4000 动态调试Android 中的so文件的方式以及技巧
- 使用IDA动态调试android so文件时的几个坑
- 如何使用arm-eabi-gdb调试android c/c++程序
- 使用ILMerge将所有引用的DLL和exe文件打成一个exe文件
- Android中自定义属性的使用------res/values文件下定义一个attrs.xml
- android调试初步(用eclipse 打断点调试 和使用logcat输出))(转)
- 解决问题:vs 使用命令行参数调试时出现"当前项目设置指定将使用特定的安全权限对该项目进行调试.在此模式下,命令行参数将不会传递给可执行文件."
- 使用VS进行打包程序解决生成两个文件的问题(压缩后只有一个exe)
- 无法找到“XXX.exe”的调试信息,或者调试信息不匹配。未使用调试信息生成二进制文件
- android 中使用addr2line调试库文件
- FAT32文件系统中使用VS2005调试C++项目出现MSVCP80D.dll错误
- firefox调试::此地址使用了一个通常应该用于其他网页浏览的端口。由于安全原因,Firefox 取消了该请求。
- 使用开源代码写了一个C++文件阅读编辑器
- VS2010下无法找到“XXX.exe”的调试信息,或者调试信息不匹配。未使用调试信息生成二进制文件。
- 如何使用arm-eabi-gdb调试android c/c++程序
- 使用GDB调试Android中的C/C++程序
- 想编一个局域网内的P2P文件传输软件,C++的,基于TCP协议,使用MFC需要建哪些类?
- 使用gdb和gdbserver调试Android C/C++程序