ODB调试_转自网易博客

合集下载

ODB命令及使用

ODB命令及使用

1)基本概念日志文件:仿真日志(DES log,Discrete Event Simulation log)和错误日志(Error log)。

它的内容是在仿真过程中由进程调用OPNET 函数op_prg_log_handle_create ()op_prg_log_entry_write ()写入的。

在Help 菜单下可以打开错误日志文件。

错误日志文件以文本方式保存为<home>/op_admin/err_log,除了在菜单中打开也可以在OPNET 控制台(console)窗口输入op_vuerr 命令查看。

它包含了函数调用堆栈信息,我们可以从函数阶层性的调用关系中精确定位出错位置。

在编写函数时必须使用FIN(function begin)、FOUT(function out)、FRET(function return)等界定函数范围的标识符,而且必须使它们配对。

编写程序时切记使FIN 和FOUT/FRET 配对。

要产生ODB 调试信息,必须将仿真核心类型设定为development,优化的仿真核心(optimized)为了加快仿真速度不产生ODB 调试信息。

之后我们还需要在仿真属性中包含debug 环境变量。

ODB 为控制和管理仿真行为提供一个交互式环境。

ODB 支持断点(Breakpoint)定义,跟踪并显示仿真诊断信息。

ODB 功能的实现有赖于进程模型中编写相应的程序支持,作为ODB 指令激活调试状态(breakpoint、trace 和action)的依据,可以在ODB 窗口中输入help<参数:all,basic,action,event,memeory,misc,object,packet,process,scripting,stop,trace>查看感兴趣的指令。

ODB常用的指令分为basic,event,object,packet,stop,trace,process 几类。

OD使用完全教程

OD使用完全教程

OD使用完全教程.txt如果不懂就说出来,如果懂了,就笑笑别说出来。

贪婪是最真实的贫穷,满足是最真实的财富。

幽默就是一个人想哭的时候还有笑的兴致。

OllyDbg调试工具使用完全教程一,什么是 OllyDbg?OllyDbg 是一种具有可视化界面的 32 位汇编-分析调试器。

它的特别之处在于可以在没有源代码时解决问题,并且可以处理其它编译器无法解决的难题。

Version 1.10 是最终的发布版本。

这个工程已经停止,我不再继续支持这个软件了。

但不用担心:全新打造的 OllyDbg 2.00 不久就会面世!运行环境: OllyDbg 可以以在任何采用奔腾处理器的 Windows 95、98、ME、NT 或是 XP(未经完全测试)操作系统中工作,但我们强烈建议您采用300-MHz以上的奔腾处理器以达到最佳效果。

还有,OllyDbg 是极占内存的,因此如果您需要使用诸如追踪调试[Trace]之类的扩展功能话,建议您最好使用128MB以上的内存。

支持的处理器: OllyDbg 支持所有 80x86、奔腾、MMX、3DNOW!、Athlon 扩展指令集、SSE 指令集以及相关的数据格式,但是不支持SSE2指令集。

配置:有多达百余个(天呀!)选项用来设置 OllyDbg 的外观和运行。

数据格式: OllyDbg 的数据窗口能够显示的所有数据格式:HEX、ASCII、UNICODE、 16/32位有/无符号/HEX整数、32/64/80位浮点数、地址、反汇编(MASM、IDEAL或是HLA)、PE文件头或线程数据块。

帮助:此文件中包含了关于理解和使用 OllyDbg 的必要的信息。

如果您还有 Windows API 帮助文件的话(由于版权的问题 win32.hlp 没有包括在内),您可以将它挂在 OllyDbg 中,这样就可以快速获得系统函数的相关帮助。

启动:您可以采用命令行的形式指定可执行文件、也可以从菜单中选择,或直接拖放到OllyDbg中,或者重新启动上一个被调试程序,或是挂接[Attach]一个正在运行的程序。

od 调试原理

od 调试原理

od 调试原理Debugging is the process of finding and fixing errors or bugs in a computer program. 调试是在计算机程序中查找和修复错误或漏洞的过程。

It is an essential part of software development, as even the most carefully written code can contain bugs that need to be identifiedand resolved. 这是软件开发中必不可少的一部分,因为即使是最仔细编写的代码也可能包含需要被识别和解决的bug。

There are various methods and tools used for debugging, and different programmers may have their own preferred techniques. 有各种方法和工具用于调试,而不同的程序员可能有他们自己偏好的技术。

One common method for debugging is to use a debugger, which is a software tool that allows the programmer to step through the code and inspect the values of variables at different points in theprogram's execution. 一种常见的调试方法是使用调试器,这是一种软件工具,允许程序员逐步执行代码,并检查程序在不同执行点的变量值。

This can help pinpoint exactly where an error is occurring and provide insight into how to fix it. 这可以帮助准确定位错误发生的地方,并提供修复它的见解。

用BDM调试的使用方法及步骤

用BDM调试的使用方法及步骤

用BDM调试的使用方法及步骤光电组-张晓明1、在Code Warrior环境下按以下操作方式下载程序到单片机A、打开Project项B、选择Make是进行工程的编译、选择Debug项调试项,是进行编译并下载到单片机的。

上述两项操作可用快捷键F7键和F5键来代替,F7是编译,F5是下载。

2、上述步骤操作后,在BDM环境下会出现如下按确定就可以3、第一次下载按完确定会出现如下窗口,打钩后下次就不再出现了(换新单片机会再次出现)4、点击OK(或按键盘回车键),等待程序下载完成5、结束后进入BDM环境6、找到第三个框(Data1框),该框是调试用的最多的一个子框,用于观看变量变化情况,以及在线给单片机状态值等在此就能看到变量以及寄存器的状态等等按下面的绿色键运行,也可直接按F5在空白处双击鼠标可以增加你想查看的全局变量(必须是全局变量)输入变量名按OK新加的变量颜色和自动提供的不太一样7、修改操作环境,如设成周期性读取状态,观看变量值等单击右键,按下图所示操作选择Periodical…会出现改变Rate框里的数字可以改变一个时间段数据刷新的频率,为了及时查看,一般设为1,大家也可以自己设置(均为整数),然后按OK同样,可以设置查看的数据形式,如二进制,八进制,十进制,十六进制等,第一次下载默认为十进制显示,单击右键,找到Format选择ALL的话是将Data1子框的所有数据按同样的形式显示选择Selected是将自己选中的数据进行相应形式的显示如下图,原先是按十进制显示的按上述操作,并选择Selected�Bin,则变成如下显示8、上述步骤操作结束后,为了下次不再输入变量,改操作环境等等,可按Ctrl+S保存,或按图中所示按钮保存9、在线调试,连着BDM回到总BDM模式,即退出Data1窗口最大化,选择Source子窗口,按红色停止按钮,即变成如下形式按Single Step单步运行,按Step Over功能和Single Step类似,这两个按键可以查每一句语句的执行情况按Step Out跳出函数,不想查看的函数,如延时等,都可以直接跳过去,节省时间。

菜鸟教程第零课、开启ce自身保护、设置od,让调试不非法

菜鸟教程第零课、开启ce自身保护、设置od,让调试不非法
一、设置ce
1置
到论坛搜索最新的OD,多试几个。在360里添加信任。
先打开OD,再打开游戏。在使用OD时,不要使用内存访问和写入断点,其它断点可以使用。
第零课开启ce自身保护设置od让调试不非法因为好多人调试出错所以写下这一课
第零课、开启ce自身保护、设置od,让调试不非法
因为好多人调试出错,所以写下这一课。不过第一课已经有了,咱就叫做第零课吧。应该不会出第负一课了^ ^
因为新区加驱动保护了,而老区没有。新手,请登录老区分析,新手还是先将过驱动放一边吧。

od使用教程

od使用教程

od使用教程
使用开发者工具(OD)可以帮助开发人员调试和测试应用程序。

下面是一些OD的常用功能和使用方法的教程:
1. 查看控制台输出信息:在OD中打开开发者工具控制台,可以查看应用程序输出的日志、错误和警告信息。

2. 调试JavaScript代码:在OD的“Sources”选项卡中,可以查看和编辑应用程序的JavaScript代码。

可以通过在代码中设置断点,并使用“Step Over”、“Step Into”和“Step Out”等按钮来逐行执行代码。

3. 检查和修改样式:在OD的“Elements”选项卡中,可以查看和修改应用程序的HTML和CSS样式。

可以在“Elements”面板中选择元素,并在“Styles”面板中编辑其样式。

4. 模拟设备和网络:在OD的“Device Mode”选项卡中,可以模拟不同的设备类型和网络条件,以确保应用程序在不同环境下的表现。

5. 监测网络请求:在OD的“Network”选项卡中,可以查看应用程序发送和接收的网络请求。

可以查看请求的详细信息,如请求头、请求参数和响应状态。

6. 性能分析:在OD的“Performance”选项卡中,可以进行应用程序的性能分析。

可以查看页面加载时间、资源占用和函数执行时间等。

这些是OD的一些常用功能和使用方法的简要介绍。

希望对你有帮助!。

OD反调试大全

OD反调试大全

调试技巧总结-原理和实现-------------------------------------------------------------------------------------------------------2008.8.7 shellwolf一、前言前段学习反调试和vc,写了antidebug-tester,经常会收到message希望交流或索要实现代码,我都没有回复。

其实代码已经在编程版提供了1个版本,另其多是vc内嵌asm写的,对cracker而言,只要反下就知道了。

我想代码其实意义不是很大,重要的是理解和运用。

做个简单的总结,说明下实现原理和实现方法。

也算回复了那些给我发Message的朋友。

部分代码和参考资料来源:1、<<脱壳的艺术>> hawking2、<<windows anti-debugger reference>> Angeljyt3、4、<<软件加密技术内幕>> 看雪学院5、<<ANTI-UNPACKER TRICKS>> Peter Ferrie我将反调试技巧按行为分为两大类,一类为检测,另一类为攻击,每类中按操作对象又分了五个小类:1、通用调试器包括所有调试器的通用检测方法2、特定调试器包括OD、IDA等调试器,也包括相关插件,也包括虚拟环境3、断点包括内存断点、普通断点、硬件断点检测4、单步和跟踪主要针对单步跟踪调试5、补丁包括文件补丁和内存补丁反调试函数前缀检测攻击通用调试器 FD_ AD_特定调试器 FS_ AS_断点 FB_ AB_单步和跟踪 FT_ AT_补丁 FP_ AP_声明:1、本文多数都是摘录和翻译,我只是重新组合并翻译,不会有人告侵权吧。

里面多是按自己的理解来说明,可能有理解错误,或有更好的实现方法,希望大家帮忙指出错误。

2、我并没有总结完全,上面的部分分类目前还只有很少的函数甚至空白,等待大家和我一起来完善和补充。

OPNET学习笔记

OPNET学习笔记

OPNET 14.5打开ODB调试窗口首先点击运行仿真的小人图表。

•在打开的窗口中如图示,先设置simulation kernel 为development.3. 在左边树状结构中找到Execution->debugger.4. 然后点击Run就可以了看到如下:5. 接下来就可以进行调试。

OPNET 14.5 与VC联调搞了好些天,头大!书上的内容全是10.0以前版本的设置方法,14.5版本变化太大,已经完全不适用了。

现在终于弄明白opnet 14.5如何和VC联调。

其实opnet14.5与VC联调不再需要另外特别的设置,不用再到edit—preference中去找这个找那个。

只需要设置好opnet和VC的环境变量就好。

一般的方法是ODB初始化以后,打开VC,在Debug 菜单下单击attach to process,然后选择op_runsim_dev.exe(或者op_runsim_opt.exe),这样就可以利用VC 提供的调试功能进行OPNET 程序调试。

一般情况下attach to process 选项框为空,这可能不是VC和OPNET程序本身的问题,因为有些应用软件的进程和op_runsim_dev.exe(或者op_runsim_opt.exe)进程冲突,如一些杀毒软件,acrobat 等,或者是其他进程开得过多所致。

这时打开任务管理器,找到op_runsim_dev.exe,右键选择调试。

这时会弹出VC。

弹出来的VC工程没有原代码,需要自己手打打开过程原代码,然后在代码中设置断点。

回到ODB中点击continue即可在断点出停止。

其实……就是这么简单……今天放弃了opnet 14.5 安装了10.0,可是安装后发现licence需要用opnet8.1的破解,又安装了8.1并破解,然后果断卸载,后来因为感觉缺少了不少功能,又使用11.5的破解程序,可是licence只有60个了,再次安装8.1,问题出现了,程序无法运行,纠结了一上午,发现,原来第一次卸载不彻底,第二次安装路径和第一次又不同,于是……解决方法:1,启动Modeler,观察dos窗口(用alt+prtscr,如果滚屏太快的话),记下错误的路径名。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

原文链接:/zhoumhan_0351/blog/static/399542272009826105222389/(本文图片需用鼠标点击方可看到,其他转帖图片根本无法看到)整理:袁嘉璐10、OpNET的ODB调试1)基本概念日志文件:仿真日志(DESlog,DiscreteEventSimulationlog)和错误日志(Errorlog)。

它的内容是在仿真过程中由进程调用OPNET函数op_prg_log_handle_create()op_prg_log_entry_write()写入的。

在Help菜单下可以打开错误日志文件。

错误日志文件以文本方式保存为<home>/op_admin/err_log,除了在菜单中打开也可以在OPNET控制台(console)窗口输入op_vuerr命令查看。

它包含了函数调用堆栈信息,我们可以从函数阶层性的调用关系中精确定位出错位置。

在编写函数时必须使用FIN(functionbegin)、FOUT(functionout)、FRET (functionreturn)等界定函数范围的标识符,而且必须使它们配对。

编写程序时切记使FIN和FOUT/FRET配对。

要产生ODB调试信息,必须将仿真核心类型设定为development,优化的仿真核心(optimized)为了加快仿真速度不产生ODB调试信息。

之后我们还需要在仿真属性中包含debug环境变量。

ODB为控制和管理仿真行为提供一个交互式环境。

ODB支持断点(Breakpoint)定义,跟踪并显示仿真诊断信息。

ODB功能的实现有赖于进程模型中编写相应的程序支持,作为ODB指令激活调试状态(breakpoint、trace和action)的依据,可以在ODB窗口中输入help<参数:all,basic,action,event,memeory,misc,object,packet,process,scripting,stop,trace>查看感兴趣的指令。

ODB常用的指令分为basic,event,object,packet,stop,trace,process几类。

Basic类指令主要包含了一些基本的操作;Event类指令主要针对事件进行操作;Object 类指令主要针对各类对象(如节点,信道等)进行操作。

Packet类指令处理所有与包相关的操作。

proldiag带的参数有2个,分别是进程ID和标签(label)。

它的效果等同于3条指令的叠加,首先ltrace激活标签;然后prodiag执行进程诊断块中的程序,并且打印标签被激活程序段的信息;最后,在执行完程序后deltrace取消对标签的跟踪。

deltrace取消对某个标签的跟踪,与激活标签不同的是,它带的参数为trace_id,而不是标签本身,但是trace_id是系统分配的,不为我们所知,需要通过输入status指令查看。

2)针对结构错误(StructuralError)的ODB调试实例我们得知是第13个事件出错我们让仿真停止在第13个事件执行之前,如下所示,在事件栏中我们看到当前中断类型为流中断,另外还有两个ID号,其中executionID为当前事件ID,scheduleID标明当前事件处在仿真核心事件列表中的位置,这两个值可能不相同,因为随着事件的增加和消减,仿真核心列表是不断变化的。

Source指明了当前中断源,例如这里表明中断是由全球网top下的pksw1子网下的node_0节点下的src进程模块在执行事件9时发出来的。

Data指明了与当前中断相关的信息,这里表明封包是从1号流端口接收来的,封包的ID为0。

Module指明当前中断的接收方,top.pksw1.node_0.proc(processor)指明了物件的阶层关系和类型,OPNET中最高层物件永远为top,代表全球网。

接着将执行第13个事件,为了观察间中执行的代码,我们启动完全跟踪(fulltrace),之后输入status命令就可以查看已设定的中断和跟踪有哪些。

接下来输入next命令,让仿真执行下一个事件。

从进程信息栏中我们可以看出当前进程(Invokingprocess)的ID号为1,进程模型的名称为pksw_nd_proc。

进程收到中断后将执行红色idle状态的窗口执行代码(exitexecutives),首先判断中断的类型为流中断,接着获取流中断索引号,其值为1。

执行完之后满足条件SRC_ARRVL,从idle状态再次转移到idle状态,同时执行条件子程序xmt(),间中试图从0号流索引的包流中获取封包,这时我们已经看出一些端倪,应该是从1号流索引收包才对,果然指示包流中并没有数据包(strm.isempty),接着出现封包指针为空的错误提示,因此op_pk_nfd_set_int32代码肯定不能正常运行。

到这里我们找到了错误所在,只要把op_pk_get(0)改为op_pk_get(1)就行了。

注意到最后两行的提示Press(ENTER)tocontinue。

这是在edit->preference中,console_exit_pause设定为TRUE带来的结果。

2)针对逻辑错误的ODB调试实例例如某个端口正常情况下应该收到数据包,吞吐量却为零。

我们通过pktrace命令启动对PacketID为1的封包的跟踪,pktrace跟踪有关包的所有执行语句,直至包被销毁。

在新版的OPNET中支持对包设置断点,任何涉及到处理封包的事件到达时仿真都会停下来,如下图所示,要推进事件必须再次输入继续仿真的命令(cont或者next),这样让我们清晰查看包在每个事件中的行为。

下面我们再次输入cont命令,包被top.pksw1.node_1.src进程模块创建,接着被top.pksw1.node_1.proc进程接收并将其dest_address域设定为1,如下图方框所示,之后被传输到底层。

接着我们再连续输入cont命令,直到包被交换机节点进程(top.pksw1.hub.hub)接收,发现包的dest_address被修改为0,如图所示。

我们仔细想一下交换机应该取出包的目的地址,根据目的地址再选择正确的路由,而不是去重新设置,这时我们已经找到了这个逻辑上的错误,只要将op_pk_nfd_set_int32改为op_pk_nfd_get_int32问题就解决了。

3)针对进程模块的ODB调试由于进程是实现整个仿真的基础,因此针对进程的调试是ODB调试的主要内容,主要包括四个部分,分别是定位进程、控制进程、跟踪进程及显示进程状态。

(1)定位进程(11)promap<Objid>显示指定进程模块包含的所有进程的ProcessID。

(12)promapall显示所有仿真中存在的进程ProcessID,如图所示。

进程标记,用来更直观地区别同种类型进程(父进程产生多个进程,这些进程是由同一个进程模型派生而来的),使用这种方法必须在进程模块中通过op_pro_tag_set(pro_handle,tag_string)来设置进程标记。

(2)控制进程ODB调试时输入指令prostop<proc_id>为进程调用设置断点。

无论什么中断,只要调用该进程,仿真都会暂时中断。

首先在进程模型中通过op_prg_odb_bkpt(label)为指定位置设置断点,这个断点以标签(label)标识,ODB调试过程中如果通过prolstop<proc_id><label>激活了该断点标签,则仿真会在被设置标签的位置中断。

(3)跟踪进程(31)protrace<proc_id>跟踪并显示调用指定进程的信息。

(32)ltrace<label>是最实用的调试指令,例如如果想找到程序中的逻辑错误,可以在可疑的程序段中加入这样一个语句。

if(op_prg_odb_ltrace_active("label")==OPC_TRUE){printf(...)},printf打印需要观察的变量,在ODB中激活标签就可以看到仿真中这些变化的情况。

(33)proltrace<proc_id><label>显示指定进程中设置过某个标签的位置所对应的信息。

(4)显示进程状态(41)在进程的诊断块(Diagnosticblock)中编写与调试相关的程序后,ODB 调试时就能通过prodiag<proc_id>执行诊断块对应的程序,从而显示调试信息。

(42)proldiag<proc_id><label>指令相当于prodiag<proc_id>与ltrace<label>的叠加。

ODB>objmapprocdp查看进程对象的信息,dp为进程的名字。

ODB>promap2查看进程模块当前被激活的进程信息,其中2为Objid。

ODB>prostop0为进程设置断点,其中0为processidODB>protrace0激活进程跟踪信息显示,其中0为processidODB>status显示指令状态。

ODB>cont,继续执行事件直至仿真运行到断点位置。

ODB>next,执行下一个事件。

子进程dp_child中的有设置进程标记的语句:sprinf(tag_string,"DynProcChild(stream%d)",op_intrpt_strm());根据包流的输入端口索引号制定进程标记tag_stringop_pro_tag_set(op_pro_self(),tag_string);为进程自身设置标签。

ODB>delstopallODB>deltraceallODB>status,再次显示指令状态,发现断点已经被取消ODB>prolstop6"dynproc_50"这时激活进程6的断点标签,当执行到进程中的op_prg_odb_bkpt("dynproc_50")语句时程序中止运行。

ODB>prodiag6,运行进程诊断块的代码。

相关文档
最新文档