Immunity Debugger 1.83 SDK

虽然知道ImmDbg的调试器是从OD的源代码的基础上改进来的,SDK差别也不是很大,但是从网上找了一下却始终没有找到下载的地方。直到今天下载一个Imm插件的时候从源代码里找到了1.83的SDK,当然对于最新的ImmDbg这个sdk开发的插件也是可以用的。

其实整个SDk在OD的基础上对一些函数进行了封装,如是而已,那么如果有源代码将代码从OD迁徙到Imm还是比较容易的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
////////////////////////////////////////////////////////////////////////////////
//////////////////////////// IMPORTANT INFORMATION /////////////////////////////
 
// 1. Export all callback functions by name, NOT by ordinal!
// 2. Force 4 byte alignment of immDbg structures!
// 3. Set default char type to unsigned!
// 4. Read documentation!
 
#ifndef __PLUGIN_H__
#define __PLUGIN_H__
 
#pragma pack(push, 4)			// Force 4 byte alignment of structures
 
#ifndef _CHAR_UNSIGNED		// Verify that character is unsigned
#error Please set default char type to unsigned (option /J)
#endif
 
#define ODBG_Plugindata      IMMDBG_Plugindata
#define ODBG_Plugininit      IMMDBG_Plugininit
#define ODBG_Pluginmainloop  IMMDBG_Pluginmainloop
#define ODBG_Pluginsaveudd   IMMDBG_Pluginsaveudd
#define ODBG_Pluginuddrecord IMMDBG_Pluginuddrecord
#define ODBG_Pluginmenu      IMMDBG_Pluginmenu
#define ODBG_Pluginaction    IMMDBG_Pluginaction
#define ODBG_Pluginshortcut  IMMDBG_Pluginshortcut
#define ODBG_Pluginreset     IMMDBG_Pluginreset
#define ODBG_Pluginclose     IMMDBG_Pluginclose
#define ODBG_Plugindestroy   IMMDBG_Plugindestroy
#define ODBG_Paused          IMMDBG_Paused
#define ODBG_Pausedex        IMMDBG_Pausedex
#define ODBG_Plugincmd       IMMDBG_Plugincmd
 
////////////////////////////////////////////////////////////////////////////////
Continue Reading

Hide Debugger for Immunity Debugger v1.8x

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
"""
(c) Mars Security. 2009-2012
Institute Of Information Serurity From Mars
Email:root@h4ck.ws
U{By obaby.<http: //www.h4ck.org.cn>}
"""
#sys.path.append("C:\\Program Files\\Immunity Inc\\Immunity Debugger\\Libs")
 
import immlib
import immutils
def main(args):
    imm = immlib.Debugger()
    #hide debugger by wipe the BeingDebugged flag in PEB struct.
    imm.writeMemory (imm.getPEBAddress() + 0x2,"\x00")
    #disable the process enume
    process32first = imm.getAddress("kernel32.Process32FirstW")
    process32next = imm.getAddress("kernel32.Process32NextW")
    function_list = [process32first, process32next]
    patch_bytes = imm.assemble("SUB EAX,EAX\nRET 8")
    for address in function_list:
        opcode = imm.disasmForward(address,nlines = 8)
        #imm.writeMemory(opcode.address,patch_bytes)
 
    return "[*] PEB BeingDebugged flag cleared ! Debugger Hided~!"
</http:>

该脚本用于去掉基于IsDebugPresent函数的调试检测。将上面的内容保存为hidedbg.py放入immdbg的PyCommands目录下,然后在immdbg的命令窗口中执行即可。 smile

Continue Reading