1111

1111

CrazyDbg 有以下扩展功能:

 

 

1、向进程载入/卸载动态库


此功能是向指定的进程注入或者卸载DLL模块,如图,在左边选择要注入DLL的进程,然后浏览要注入的DLL,点击注入就行。如果要卸载DLL,在右边的模块列表中选中要卸载的DLL模块,右键菜单点击卸载模块即可。

 

2、远程执行代码

 

所谓远程执行代码,就是跨进程调用代码,或者跨进程CALL。界面如图:

 

 

要在指定的进程执行代码,先新建一个代码,然后可以按照里面的提示写入代码,代码可是高级语言代码,也可以是汇编代码。

代码写好后,在上面运行进程选择框里面选择要运行的进程,然后点击工具条上的执行即可。

如果担心代码在进程中运行出错导致程序奔溃,可以选中异常保护选项,这样即使出错也不会导致程序奔溃退出。

入口处中断选项,是为了方便调试编写的代码,先用OD附加目标运行进程,然后选中入口处中断选项,点击执行,就会在OD中中断,这时可以单步跟踪编写的代码。强调一点就是,一定要OD附加目标进程,如果不附加选中入口出中断,会产生异常导致代码执行不了。因此如果不想调试编写的代码,就不要选中入口处中断选项。

执行方式1如果执行不起来,可以使用执行方式2执行编写代码,具体情况中,请选择使用。

 

 

3、条件硬件断点

 

许多调试器拥有硬件断点功能,但是没有条件断点功能。使用此功能可以为所有的调试器添加条件硬件断点功能。使用方法就是在下面的界面中选中被调试的进程,然后设置条件,在调试器比如OD中设置硬件断点,条件就会对硬件断点进行筛选。条件成立的断点会被调试器中断,不成立的则忽略。因为是在内核进行,筛选速度很快,因此几乎不影响调试进程的运行。

 

 

条件表达式输入后,要点击启用才会生效。然后窗口不要关闭,否则条件将自动取消。

条件表达式,可以引入寄存器和常数内存地址或者常数偏移,可以混合使用。条件表达式可以多个子表达式,子表达式可以用括弧来强调执行顺序,也可以用 or and 来连接。

可以使用 db dw dd dq 对寄存器,内存值进行数值转换,比如(dw)eax == 8,会先将eax转换成短整数(USHORT)再与8进行比较;db 表示 byte, dd 表示ULONG,dq 表示ULONG64。

需要注意的是十六进制需要在前面加0x,否则将被认为是十进制数值.

举例几个表达式:

1. [esp+8] == ecx

2. eax + ([esp] - 0x22) > edx

3. [[esp+8]] and eax == 2

4.(dd)[r8] == 0x4000012

5. rdi != 0xff700801265

 

4、保护进程

 

许多被调试进程有反调试功能,比如某病毒样本一运行发现ollydbg就把ollydbg进程强制结束掉,使调试工作无法进行。利用此功能可以将调试器进程保护起来,防止一些反调试手段导致调试器不能正常工作。

 

 

上面的进程列表中选择进程,右键单击选择添加保护进程即可将进程添加为保护的进程。另外选中调试功能界面中的保护调试器选项,打开调试器,调试器会自动被保护。

 

 

5、进程

 

进程功能,是查看系统的进程列表,观察一些参数对象,可以查看进程的模块、线程、句柄以及窗口列表,另外可以进行一些操作,比如暂停。恢复、结束进程线程。作为辅助调试的一个功能,有时候需要用到。

 

 

 


6、硬件中断转移


在某种特殊的情况下,比如要让EIP跳转到某个地址去执行而又不修改内存,这时候硬件中断转移就派上用场了。如下图,要让EIP转到某个地址执行,先选择被调试的进程,然后输入要开始转移的原EIP地址和转移到的EIP地址,选中启用,

在调试器中设置原EIP为执行断点,当执行到原EIP时,原先应该产生的中断会被取消,转为跳转到转到EIP去执行,从而实现了转移。

 

7、硬件中断记录

 

我们知道在调试器中,比如OD,设置一个硬件访问断点,往往会产生好多地址的中断,而调试器不会输出这些地址的列表。硬件中断记录,就是这样一种功能,能记录硬件访问、写入断点产生中断地址列表,包括寄存器和线程信息

。具体使用如下图界面,选中被调试的进程,勾选开始记录选择框,然后在调试器中设置硬件访问断点或者写入断点,当被调试进程产生中断时记录就会显示在下图界面中。注意,这时候调试器不会产生中断事件,要获取中断事件必须取消勾选开始记录选择框。