mian( )函数查找(Windows下逆向分析)
2016-02-22 07:59
423 查看
以
Visual Studio编译的Hello World程序为例:
1、字符串分析法
搜索字符串Hello World并进入,跳转到上层函数(信息窗口),寻找标志:函数参数(main函数后两个参数是指针),exit等。
2、API下断栈回溯法
找到main函数中的Hello World并进入,在函数入口处下断,F9运行,查看堆栈情况,找到离断点最近的return,单击回车,便回到上一个栈帧。
查找关键函数,下断
根据字符串找到此处,并在入口处下断
F9运行,查看堆栈
找到离断点最近的return,单击回车,回到上一个栈帧
栈回溯结果:
3、单步跟踪法(最靠谱、适应性最强)
以JMP和Call为单位逐个跟进,根据main函数的特征判断main函数的位置(参数个数,参数类型,临近exit)
注:逐层查找
4、若是窗口程序,可通过查找 窗口回调函数(Spy++)进行分析
经验之谈:
a.OD上 E 键调出模块信息,找到用户模块,可跳转到main函数,同时得到模块基址;
b.一般情况下,条件分支不走的分支,设置为新的EIP,直接运行过去;
Visual Studio编译的Hello World程序为例:
1、字符串分析法
搜索字符串Hello World并进入,跳转到上层函数(信息窗口),寻找标志:函数参数(main函数后两个参数是指针),exit等。
2、API下断栈回溯法
找到main函数中的Hello World并进入,在函数入口处下断,F9运行,查看堆栈情况,找到离断点最近的return,单击回车,便回到上一个栈帧。
查找关键函数,下断
根据字符串找到此处,并在入口处下断
F9运行,查看堆栈
找到离断点最近的return,单击回车,回到上一个栈帧
栈回溯结果:
3、单步跟踪法(最靠谱、适应性最强)
以JMP和Call为单位逐个跟进,根据main函数的特征判断main函数的位置(参数个数,参数类型,临近exit)
注:逐层查找
4、若是窗口程序,可通过查找 窗口回调函数(Spy++)进行分析
经验之谈:
a.OD上 E 键调出模块信息,找到用户模块,可跳转到main函数,同时得到模块基址;
b.一般情况下,条件分支不走的分支,设置为新的EIP,直接运行过去;
相关文章推荐
- 《Linux优化之安全最小化6个思想》
- 第11期《梦想,一直在路上》2016年2月刊
- Android 使用android-support-multidex解决Dex超出方法数的限制问题,让你的应用不再爆棚
- OSChina 周一乱弹 ——取经之路才刚刚开始
- 同步异步5:任务提交中的同步异步
- HTML基础(CSS)
- LeetCode One Edit Distance
- 同步异步4:CDMA中的同步异步
- 34. Search for a Range
- Integer的源码分析
- MVC Controller return 格式之JsonResult、ContentResult、RedirectResult……
- iOS中的两种搜索方式UISearchDisplayController和UISearchController
- iOS中的两种搜索方式UISearchDisplayController和UISearchController
- iOS中的两种搜索方式UISearchDisplayController和UISearchController
- HashMap 分析
- 81. Search in Rotated Sorted Array II
- 51Nod 1013 3的幂的和(快速幂+逆元)
- LeetCode Binary Tree Upside Down
- 【Leetcode】House Robber II
- [Immutable.js] Converting Immutable.js Structures to Javascript and other Immutable Types