第二: 如果你按f9后OD会开始执行你的程序,这时候除非碰到断点是不会停止的,如果你是按了f9后停留在ntdll说明程序此时遇到中段或者进入了更高级别的段,OD是调试r3级别程序的利器但是无法对r0级别的代码进行调试
第三: 许多程序都会用一个小小的手段来迷惑调试者,那就是seh结构化异常处理来进行程序的跳转或者判断程序是否给调试 此情况比较多,但是OD会有提示
第四: 而不是程序的领空这句话说的我很蛋疼,你并没有告诉我你的程序执行情况,是否断点,是否异常,或者OD是否提示IO指令等等
所以请你把od的提示弄清楚后在发问,详细的代码段,执行环境,断点数量和出现问题将OD所在文件夹下的UDD文件夹里文件都删除就可以了。
UDD里的文件是用来保存调试进度的,你调试到一半想明天再继续调试,关闭OD后,你下的一些断点信息都保存在UDD文件里,第二天你打开的时候断点还在,这就是UDD里文件的作用。这是一段OD调试器中汇编代码的片段,如果要根据这段代码编写易语言代码,需要先了解汇编代码中的指令含义和 *** 作数,再根据易语言中对应的语法来编写代码。
根据这段汇编代码,可以大概推测出它的功能是将一个值保存到某个内存地址中,然后调用一个函数。具体来说,可以将这段汇编代码转化为以下易语言代码:
// 将eax寄存器中的值保存到ebp-0x4064内存地址中
let dword ptr[ebp-0x4064] = eax;
// 将0x1压入栈中
push 0x1;
// 将ebp-0x4078内存地址中的值赋给edx寄存器
let edx = dword ptr[ebp-0x4078];
// 将edx寄存器的值压入栈中
push edx;
// 将eax寄存器的值压入栈中
push eax;
// 将ebp-0x82C8内存地址中的值赋给ecx寄存器
let ecx = dword ptr[ebp-0x82C8];
// 调用Neuz00425160函数
call 0x00425160;
需要注意的是,这段代码中有一些汇编指令对应的易语言语法不是一一对应的,需要根据具体情况来转换,同时还需要根据具体的代码逻辑来判断是否需要添加一些辅助语句。此外,如果这段汇编代码是属于一个函数的一部分,还需要将整个函数的汇编代码转化为易语言代码来保证程序正确执行。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)