软件调试

读《软件调试》第九章

ぐ巨炮叔叔 提交于 2020-03-02 18:14:52
今日读了张银奎老师的《软件调试》,前面的CPU和硬件相关的部分离得比較远,所以从第九章操作系统读起,今天的读书笔记: 9.2採集调试消息 调试事件分为8种 typedef enum _DBGKM_APINUMBER { DbgkmExceptionApi = 0, // 异常 DbgkmCreateThreadApi = 1, // 创建线程 DbgkmCreateProcessApi = 2, // 创建进程 DbgkmExitThreadApi = 3, // 退出线程 DbgkmExitProcessApi = 4, // 进程退出 DbgkmLoadDllApi = 5, // 映射DLL DbgkmUnloadDllApi = 6, // 反映射DLL DbgkmErrorReportApi = 7, // 内部错误 DbgkmMaxApiNumber = 8, // 这组常量的最大值 } DBGKM_APINUMBER; 9.2.2 进程和线程创建消息 操作系统就支持向调试系统发送消息,这个我是没有想到的,详细步骤例如以下: 创建用户态windows线程时,首先为线程建立必要的内核对象和数据结构,并分配栈(stack)空间,这些工作完毕后, 该线程处于挂起状态(CREATE_SUSPEND), 而后进程管理器会通知环境子系统,环境子系统会作必要的设置和登记,最后

OllyDbg笔记-软件逆向调试技巧

穿精又带淫゛_ 提交于 2019-12-23 08:24:21
在某些收费软件中,有些是通过注册表,来判断是不是使用到期,或者次数到了。 OllyDBG从原理上来区分,有两种不同的断点:软件断点和硬件断点。 软件断点就是常说的F12。 而硬件断点它们只用于调试:用于调试,我们称为调试寄存器:Dr0~Dr7 其中Dr0~Dr3四个寄存器用来存放中断地址,Dr4、Dr5保留不使用,Dr6、Dr7用来记录Dr0~Dr3的属性(如读,写还是执行,单位是字节,字还是双字)。 所以只有4个硬件断点; 下面来找个软件来试试手: 如下这个硬件断点只有4个,这个硬件断点可以在系统领域中下。 目前004这个是在exe里面的。 在系统领域下按F2,会使用这个硬件端点,也可以使用 下面进入dll中了。开始进入到系统领域: 此处就是关键了。对比eax是不是为1,如果是是就跳转。下面改成这样的: 这样开头的那个就破解了! 下面是结尾的这个广告: 这里弹出这个窗口后,暂停下,然后按下K 从中: 可以看到只有一个用户态的 直接将其废掉。 保持后,即可 这里是暴力破解,还有个思路!!! 特别针对这些给次数的。!!!! 在每一个跳转的地方,进行记录,看看那个试用阶段和不让进入阶段,那个地方不一样。 然后再强制跳转,通过这样的方式,也是很好的办法。 来源: CSDN 作者: IT1995 链接: https://blog.csdn.net/qq78442761/article

ollydbg入门记录

匿名 (未验证) 提交于 2019-12-03 00:40:02
1.软件窗口说明 OllyDBG 中各个窗口的名称如下图。简单解释一下各个窗口的功能, 反汇编窗口:显示被调试程序的反汇编代码,标题栏上的地址、HEX 数据、反汇编、注释可以通过在窗口中右击出现的菜单 界面选项->隐藏标题 或 显示标题 来进行切换是否显示。用鼠标左键点击注释标签可以切换注释显示的方式。 寄存器窗口:显示当前所选线程的 CPU 寄存器内容。同样点击标签 寄存器 (FPU) 可以切换显示寄存器的方式。 信息窗口:显示反汇编窗口中选中的第一个命令的参数及一些跳转目标地址、字串等。 数据窗口:显示内存或文件的内容。右键菜单可用于切换显示方式。 堆栈窗口:显示当前线程的堆栈。 要调整上面各个窗口的大小的话,只需左键按住边框拖动,等调整好了,重新启动一下 OllyDBG 就可以生效了。 2.软件快捷键 F2 //下断点 F3 //加载一个可执行程序 F4 //程序执行到光标处 F5 //缩小,还原当前窗口 F7 //单步步入 F8 //单步步过 F9 //直接运行程序,遇到断点处,程序会暂停 Ctrl+F2 重新运行程序到起始处,用于重新调试程序 Ctrl+F9 //执行到函数的返回处,用于跳出函数 Alt+F9 //执行到用户代码处,用于快速跳出系统函数 Ctrl+G //输入十六进制地址,快速定位到该地址处 Ctrl+F2 //重新运行当前调试的程序 Alt+F2