Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1504106
  • 博文数量: 228
  • 博客积分: 1698
  • 博客等级: 上尉
  • 技术积分: 3241
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-24 21:49
个人简介

Linux

文章分类

全部博文(228)

文章存档

2017年(1)

2016年(43)

2015年(102)

2014年(44)

2013年(5)

2012年(30)

2011年(3)

分类: 网络与安全

2014-05-21 13:20:45

通常用OllyDBG打开一个程序之后,并没有直接跳到程序主函数入口地址,而是在进行一些初始化工作,这个是需要跳过的。
如果你对反汇编比较熟悉的话可以直接找函数入口地址:
1. 找几个压栈指令
2. 压栈完了之后就是对栈的初始化
3. 通常在压栈指令之前都有一个跳转指令(这个有时地址偏移比较大)

如果上述都不太熟悉的话可以中规中矩的进行单步运行:
1.开始之后便一直F8,直到步过下面这个函数:
     FF15 38804000 call dword ptr ds:[<&KERNEL32.GetVersion>; kernel32.GetVersion
     GetVersio():判断当前运行的Windows和DOS版本


2. 然后继续F8,直到步过下面这个函数:
     FF15 34804000 call dword ptr ds:[<&KERNEL32.GetCommand>; kernel32.GetCommandLineA
     GetCommandLineA():不接受参数,获取自己程序的命令行参数
     GetCommandLineA后面还有好几个Call,在第四个call完之后的下一个call通常就是程序的主函数入口地址了。

3.跳到GetCommandLineA后面的第五个函数时就得F7了,进去就是了。
阅读(12576) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~