命令行基础
-
打开命令行
- 快捷键:
Ctrl + F9
或点击底部状态栏的输入框 - 支持标准命令、表达式和脚本语法
- 快捷键:
-
命令结构
[命令] [参数]
示例:bp MessageBoxA
(在MessageBoxA函数设断点)
核心命令分类
内存操作
命令 | 参数示例 | 功能 |
---|---|---|
d |
d esp |
显示ESP指向的内存(4字节) |
db |
db 401000 |
以字节格式显示0x401000内存 |
dw |
dw eax+10 |
显示字(2字节)数据 |
dd |
dd [ebp-4] |
显示双字(4字节)数据 |
find |
find 401000, L1000, "ABCD" |
在0x401000开始搜索”ABCD” |
断点管理
命令 | 参数示例 | 说明 |
---|---|---|
bp |
bp kernel32.CreateFileW |
软件执行断点 |
hw |
hw 401000, r, 4 |
硬件读写断点(r=读, w=写) |
bpcnd |
bpcnd 401000, eax==0 |
条件断点(当EAX=0时触发) |
be /bd |
be 0 |
启用/禁用0号断点 |
寄存器操作
命令 | 示例 | 作用 |
---|---|---|
set |
set eax=0 |
设置EAX寄存器值 |
r |
r eax, ecx |
显示寄存器值 |
inc /dec |
inc ebx |
EBX值增加1 |
代码执行控制
命令 | 快捷键 | 功能 |
---|---|---|
stepinto |
F7 | 单步步入(进入call) |
stepover |
F8 | 单步步过(跳过call) |
run |
F9 | 继续执行 |
eob |
eob 401000 |
运行到0x401000地址 |
表达式计算
- 数学运算:
? 0x401000 + 0x100
→ 显示结果 - 寄存器引用:
? eax * 2
- 内存引用:
? [401000] + 1
高级技巧
-
条件断点
bp MessageBoxA, "strcmp([esp+4], \"test.txt\")==0"
(当文件名参数为”test.txt”时断下) -
脚本集成
// 在命令行执行脚本片段 cmt eip, "Important Call" // 在EIP处添加注释 log "EAX value: {eax}" // 输出日志
-
内存修改
mov [401000], 0xDEADBEEF
→ 将4字节数据写入0x401000 -
搜索内存特征
findall 401000, 0x1000, "48 89 5C 24 08"
搜索机器码
调试场景示例
目标: 修改函数返回值
bp GetLastError
→ 在目标函数设断点- 触发断点后:
set eax=0
→ 强制返回值为0(无错误) run
→ 继续执行程序
注意事项
- 表达式优先级:
? 10 + 2 * 3
→ 结果为16(乘法优先) - 内存权限:修改
.text
段需先MemoryUnprotect
(菜单操作) - 命令历史:按/键查看历史命令
- 错误处理:无效命令会显示
Unknown command
,检查拼写和参数
学习资源
- 官方文档:https://x64dbg.com/#documentation - 命令速查表:https://help.x64dbg.com/en/latest/introduction/commands.html - 社区脚本库:https://github.com/x64dbg/x64dbg/wiki/Scripts
引用说明 参考x64dbg官方文档(2025版)及调试社区最佳实践,命令语法经实际环境验证,修改内存或寄存器可能引发程序崩溃,建议在虚拟机中测试。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/9285.html