OD跟踪程序,程序自动退出的问题!

OD跟踪程序,程序自动退出的问题!,第1张

异或EBP寄存器~是清空EBP而已

应该是XOR下面指令问题吧

使用BPX 效果比较BP好!!!

BPX直接中断在程序领空而BP中断在系统领空

中断在系统领空应该Atl+F9返回程序领空才对呀??

方法使用不对!!!

方法一 : 再点击内存在第三列(属主)中找你所调试的进程名所对应的地址,凡是进程名所对应的地址都是程序的领空方法二:查看OD的标题栏 上面标示的是[CPU-主线程,模块-进程名]那就代表你所看到的代码处于程序的领空

方法一 : 再点击内存在第三列(属主)中找你所调试的进程名所对应的地址,凡是进程名所对应的地址都是程序的领空方法二:查看OD的标题栏 上面标示的是[CPU-主线程,模块-进程名]那就代表你所看到的代码处于程序的领空

一、OD入门

1OD简介

OD默认功能

1 汇编代码对应的地址窗口(虚拟地址,一般情况下,同一程序的同一条指令在不同系统环境下此值相同。)

2 汇编代码对应的十六进制机器码窗口

3 反汇编窗口

4 反汇编代码对应的注释信息窗口

5 寄存器信息窗口

6 当前执行到的反汇编代码的信息窗口

7~9 数据所在的内存地址,十六进制,ASCII码

10~12栈地址,存放的数据,对应说明信息

2OD快捷键

F2 下断点,也就是指定断点的地址

F3 加载一个可执行程序,进行调试分析

F4 程序执行到光标处

F5 缩小、还原当前窗口

F7 单步步入

F8 单步步过

F9 直接运行程序,遇到断点处,程序暂停

Ctrl+F2 重新运行程序到起始处,一般用于重新调试程序

Ctrl+F9 执行到函数返回处,用于跳出函数实现

Alt+F9 执行到用户代码处,用于快速跳出系统函数

Ctrl+G 输入十六进制地址,快速定位到该地址处

二、关于寄存器

EAX:扩展累加寄存器

EBX扩展基址寄存器

ECX扩展计数寄存器

EDX扩展数据寄存器

ESI扩展来源寄存器

EDI扩展目标寄存器

以下三个不可随便用,他们的范围是(0--ffffffff)

EBP扩展基址指针寄存器,主要用于栈和栈帧

ESP扩展堆栈指针寄存器,指向当前进程的栈空间地址

EIP:扩展的指令指针寄存器,总是指向下一条被被指向的命令

三、调试技巧总结

调试技巧总结

1F2下断点,Alt+b打开断点编辑器,可编辑所有下过的断点,空格键可快速切换断点状态。

2当位于某个CALL中,这时想返回到调用这个CALL的地方时,可以按“Ctrl+F9”快捷键执行返回功能。

这样OD就会停在遇到的第一个返回命令(如RET、RETF或IRET)。

3如果跟进系统DLL提供的API函数中,此时想返回到应用程序领空里,可以按快捷键“Alt+F9”执行返回到用户代码命令。

4所谓领空,实际上就是指在某一时刻,CPU执行的指令所在的某段代码的所有者。

5如004013F7这类地址一般是可执行文件领空,7C8114AB这类大地址一般是系统DLL所在的地址空间。

6程序通常读取文本框内容的字符串用的是以下两个函数:

GetDlgItemTextA(GetDlgItemTextW)

GetWindowTextA(GetWindowTextW)

7一般我们要结合经验通过猜测的方式多尝试几遍设陷阱,找出相关的函数。

8按“Ctrl+G”键打开跟随表达式的窗口。

9也可以通过“Ctrl+N”键打开应用程序的导入表(输入表),然后查看应用程序总共导入了哪些函数来以此推断需要在哪里挖坑下陷阱!

10关于返回值,汇编代码的返回值约定是存放在eax这个寄存器里边的,如果32位的eax不够存放返回值,系统会将返回值放在内存某个位置并把该位置的地址放在eax返回。

以上就是关于OD跟踪程序,程序自动退出的问题!全部的内容,包括:OD跟踪程序,程序自动退出的问题!、怎么判断od是否进入程序领空麻烦告诉我、怎么判断od是否进入程序领空等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10103186.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存