有关某个命令的详细信息,请输入`help COMMAND`。 所有命令均区分大小写。 -------------------------------------------------------------------------------- exit - 退出主控端,结束所有已连接的客户端。 ---------- 退出主控端,结束所有已连接的客户端。 exit -------------------------------------------------------------------------------- listen - 启动监听器,等待客户端连接。 ---------- 启动监听器并显示监听地址,等待客户端连接。 listen [--ipv6] [PORT] --ipv6 监听IPv6连接而非IPv4连接。 PORT 监听端口。默认值为31415。 本命令只可被成功地执行一次;启动监听器后执行此命令会失败。 -------------------------------------------------------------------------------- target - 获取或设定命令的操作目标。 ---------- 获取或设定命令的操作目标。 target [ID] target --doll target --monitor ID 操作目标的ID。 如果省略本参数,则显示所有已连接客户端的列表。 --doll 设定操作目标为上一个受控端操作目标。 --monitor 设定操作目标为上一个监控端操作目标。 -------------------------------------------------------------------------------- load - 从脚本文件读取并执行命令。 ---------- 从脚本文件读取并执行命令。 load SCRIPT [ARGUMENTS ...] SCRIPT 待执行的脚本文件。 如果使用双引号括起本参数,SCRIPT被视为文件的完整路径; 否则,SCRIPT被视为“Scripts”文件夹(优先查找)或“Scripts\API” 文件夹中脚本文件的名称(可以不包含扩展名)。 ARGUMENTS 传递给脚本文件的参数。 这些参数会被追加到脚本文件中任何以“*”结尾的命令之后。 -------------------------------------------------------------------------------- help - 提供命令的帮助信息。 ---------- 提供命令的帮助信息。 help [COMMAND] COMMAND 显示命令COMMAND的帮助信息。 如果省略本参数,则显示所有命令的列表。 -------------------------------------------------------------------------------- rem - 将本行的剩余部分视为注释。 ---------- 将本行的剩余部分视为注释。 rem [...] #[...] -------------------------------------------------------------------------------- end - (M/D) 结束客户端,终止其对应的进程。 ---------- 结束客户端,终止其对应的进程。 end -------------------------------------------------------------------------------- doll - (M) 创建新受控端。 ---------- 通过启动新进程或附加到进程的方式,创建新受控端。 doll CMDLINE doll --attach PID CMDLINE 运行CMDLINE,并将其作为新受控端。 PID 附加到ID为PID的进程,并将其作为新受控端。 使用`ps`命令获取所有进程的PID。 -------------------------------------------------------------------------------- shell - (M) 启动系统命令解释器。 ---------- 启动系统命令解释器(%COMSPEC%,通常为CMD.EXE)。 shell [ARGUMENTS ...] ARGUMENTS 传递给%COMSPEC%的参数。 -------------------------------------------------------------------------------- kill - (M) 终止PID或进程名对应的进程。 ---------- 终止PID或进程名对应的进程。 kill PID kill --all NAME PID 终止ID为PID的进程。 使用`ps`命令获取所有进程的PID。 NAME 终止进程名为NAME的所有进程。 -------------------------------------------------------------------------------- ps - (M) 显示所有进程的列表。 ---------- 显示所有进程的列表。 ps -------------------------------------------------------------------------------- hook - (D) 安装一个钩子,并设定其激活时进行的操作。 ---------- 安装一个钩子,并设定其激活时进行的操作。 hook hook {[MODULE!]SYMBOL|0xADDR|*PATTERN} [--convention=CONVENTION] [--stack=STACK[,RETURN]] [--before [ACTION ...]] [--after [ACTION ...]] 不带参数执行本命令,则显示所有钩子的列表。 在已存在的钩子上重新安装钩子,将覆盖钩子的约定、栈平衡及操作设定。 MODULE 寻找符号SYMBOL时要搜索的模块。 如果省略本参数,则搜索所有模块,取第一个找到的符号。 SYMBOL 待挂钩函数的符号名(如 WinExec 或 kernel32!Sleep)。 ADDR 待挂钩函数的虚拟地址(如 0x401000)。 PATTERN 待挂钩函数的十六进制特征码(如 *8B4C240885D2)。 CONVENTION 待挂钩函数的调用约定。可用的调用约定为: x86 客户端:stdcall(默认), cdecl, fastcall x64 客户端:msvc(默认), gcc STACK 待挂钩函数返回时,栈顶指针的偏移量。默认值为0。 RETURN 驳回待挂钩函数的执行时,应设定的返回值。默认值为0。 ACTION 钩子被激活时应进行的操作。 可用的操作为: --echo=ECHO - 显示一个字符串。 --dump=DUMPADDR,DUMPSIZE - 转储内存数据。 --ctx=CTXKEY,CTXVALUE - 向上下文字典添加条目。 --verdict=VERDICT - 设定默认判定值。 任一操作可出现不止一次。 ECHO 待显示的、可能包含表达式的字符串。 DUMPADDR 计算结果为`uword`类型的表达式,作为转储数据的地址。 DUMPSIZE 计算结果为整型的表达式,作为转储数据的长度。 CTXKEY 作为字典条目的键、可能包含表达式的字符串。 CTXVALUE 作为字典条目的值、可能包含表达式的字符串。 VERDICT 判定值。有关可能的值,请参考`help verdict`。 如果省略本操作,进程将在钩子被激活时中断,等待用户判定。 字符串中的表达式将根据其计算结果的类型进行格式化: 无符号整型及`byte`: 以零扩展的十六进制数。 有符号整型及`sbyte`: 十进制数。 字符串: 以双引号括起的字符串。 `char`: 以单引号括起的字符。 `bool`: “True”或“False”。 上述类型值的数组: 以花括号括起的、以逗号分隔的各元素格式化的结果。 任何其它类型: 触发计算错误。 有关表达式的帮助信息,请输入`help eval`。 -------------------------------------------------------------------------------- unhook - (D) 移除指定的钩子。 ---------- 移除指定的钩子。 unhook ID ID 钩子的ID。 -------------------------------------------------------------------------------- break - (D) 中断或继续进程的执行。 ---------- 中断或继续进程的执行。 break 本命令会使进程的执行状态在“中断”和“执行”间切换。 新受控端总是自动被受控端模块置于“中断”状态。 -------------------------------------------------------------------------------- loaddll - (D) 在当前进程的地址空间中装载模块。 ---------- 在当前进程的地址空间中装载模块。 loaddll MODULE MODULE 传递给LoadLibrary()的模块文件路径。 在内部实现上,本命令在当前进程中创建一个新线程,并在其中调用LoadLibrary()。 使用本命令装载受控端模块(libDoll.dll)不会造成任何后果,但绝不能尝试。 -------------------------------------------------------------------------------- eval - (D) 在当前钩子的上下文中计算表达式。 ---------- 在当前钩子的上下文中计算表达式。 eval EXPR EXPR 待计算的表达式。 “表达式”是指使用花括号括起的、符合C#语法的表达式,如{(uint)poi(ax)+4}。 下列命名空间中的类型: System System.Linq System.Collections.Generic 以及下列方法及字段,均可以在表达式中使用: (类型别名) word 与CPU字长等长的有符号整型(对于x86为`int`,对于x64为`long`)。 (类型别名) uword 与CPU字长等长的无符号整型(对于x86为`uint`,对于x64为`ulong`)。 string str(uword PTR) 返回指针PTR所指向的C语言风格字符串。 string wstr(uword PTR) 返回指针PTR所指向的C语言风格宽字符字符串。 string ctx(string KEY) 返回上下文字典中键KEY所对应的值。 byte[] mem(uword PTR, uint LEN) 返回指针PTR所指向的、长度不超过LEN的内存数据。 uword poi(uword PTR) 返回指针PTR所指向的`uword`值。 uword arg(uint INDEX) 返回函数的第INDEX个(从零开始计数)参数的值。 int dump(byte[] BLOB) 转储BLOB中的数据,并返回其在转储列表中的ID。 uword ax, cx, dx, bx, sp, bp, si, di, r8, r9 对应的寄存器的值。只读。 `r8`及`r9`仅在x64客户端上可用。 -------------------------------------------------------------------------------- dump - 显示或保存已转储的数据。 ---------- 显示或保存已转储的数据。 dump dump ID [--format=FORMAT] [--save=SAVEFILE] 不带参数执行本命令,则显示所有已转储数据的列表。 ID 已转储数据的ID。 FORMAT 使用FORMAT格式显示或保存数据。可用的格式为: hex(默认), raw, ansi, unicode, utf8, 8086, x86, x64 SAVEFILE 将数据保存到文件SAVEFILE。 如果SAVEFILE存在,其内容将被覆盖。 -------------------------------------------------------------------------------- verdict - (D) 判定当前激活的钩子。 ---------- 判定当前激活的钩子。 verdict {approve|reject|terminate} approve 继续程序的执行。 reject 驳回对挂钩函数的调用并立即返回。 有关栈平衡的信息,请参考`help hook`。 terminate 结束当前进程。 --------------------------------------------------------------------------------