unary minus / binary not / logical not :( -1negative 1),~1(binary not of 1),!0(logical not of 0)。
左/右移/旋转 :( 1<<2左移,shl表示未签名,sal表示签名),10>>1(右移,shl表示无符号,sal表示签名),1<<<2(向左旋转),1>>>2(向右旋转)。
a++/a--哪里a可以是任何寄存器,标志,变量或内存位置。
三、表达函数
您可以在表达式中使用函数。调试器定义了以下函数:
1、GUI交互
disasm.sel()/ dis.sel():在反汇编视图中获取所选地址。
dump.sel() :在转储视图中获取所选地址。
stack.sel() :在堆栈视图中获取所选地址。
2、来源
src.disp(addr):获取addr相对于最后一个源代码行的位移。
src.line(addr):获取源代码行数addr。
3、模块
mod.party(addr):参加模块派对addr。0是用户模块,1是系统模块。
mod.base(addr):获取模块的基址addr。
mod.size(addr):获取模块的大小addr。
mod.hash(addr):获取模块的哈希值addr。
mod.entry(addr):获取模块的入口地址addr。
mod.system(addr):如果模块位于addr系统模块,则为True 。没有模块是用户模块。
mod.user(addr):如果模块位于addr用户模块,则为True 。没有模块是用户模块。
mod.main():返回主模块(debuggee)的基础。如果这是一个DLL,它将返回,0直到加载。
mod.rva(addr):获得RVA addr。如果addr不在模块内,它将返回0。
mod.offset(addr):获取文件偏移量addr。如果addr不在模块内,它将返回0。
4、处理信息
peb() :获取PEB地址。
teb() :获取TEB地址。
tid() :获取当前的线程ID。
5、一般目的
bswap(value):字节交换value。
ternary(condition, val1, val2):如果条件非零,则返回val1,否则返回val2。
GetTickCount() :tick计数x64dbg。
6、记忆
mem.valid(addr):如果addr是有效的内存地址,则为True 。
mem.base(addr):返回内存页面的基数addr(可以根据您的内存映射模式更改)。
mem.size(addr):返回内存页面的大小addr(可以根据内存映射模式而改变)。
mem.iscode(addr):如果addr是可执行的页面,则为True 。
mem.decodepointer(ptr):相当于调用DecodePointerAPI ptr,仅适用于Vista +。
7、反汇编
dis.len(addr):获取指令的长度addr。
dis.iscond(addr):如果指令at addr是条件分支,则为True 。
dis.isbranch(addr):如果指令at addr是分支(jcc / call),则为True 。
dis.isret(addr):如果指令addr是a ,则为真ret。
dis.iscall(addr):如果指令addr是a ,则为真call。
dis.ismem(addr):如果指令at addr有内存操作数,则为True 。
dis.isnop(addr):如果指令at addr等于NOP ,则为真。
dis.isunusual(addr):如果指令处于addr异常状态,则为真。
dis.branchdest(addr):指令的分支目的地addr(如果按Enter键,它会跟随什么)。
dis.branchexec(addr):如果分支处于addr执行状态,则为True 。
dis.imm(addr):指令的立即值addr。
dis.brtrue(addr):指令的分支目的地addr。
dis.brfalse(addr):如果指令at addr是条件分支,则为下一条指令的地址。
dis.next(addr):来自的下一条指令的地址addr。
dis.prev(addr):上一条指令的地址addr。
8、跟踪记录
tr.enabled(addr):如果启用了跟踪记录,则为True addr。
tr.hitcount(addr):跟踪记录上的命中数addr。
tr.runtraceenabled() :如果启用了运行跟踪,则为True。
9、字节/字/双字/四字/ PTR
ReadByte,Byte,byte(addr):从中读取一个字节addr并返回该值。
ReadWord,Word,word(addr):从中读取一个字(2个字节)addr并返回该值。
ReadDword,Dword,dword(addr):从中读取一个双字(4个字节)addr并返回该值。
ReadQword,Qword,qword(addr):从中读取一个qword(8个字节)addr并返回该值(仅在x64上可用)。
ReadPtr,ReadPointer,ptr,Pointer,pointer(addr):从中读取指针(4/8字节)addr并返回值。
10、功能
func.start():函数的开始addr是零的一部分,否则为零。
func.end():函数结束addr是其中一部分,否则为零。
11、参考资料
ref.count() :当前参考视图中的条目数。
ref.addr(index):获取参考地址index。失败归零。
12、参数
这假设返回地址在堆栈上(例如,您在函数内)。
arg.get(index):获取index(从零开始)的参数。
arg.set(index, value):将参数设置为index(从零开始)为value。
13、插件
插件可以注册自己的表达式函数。有关更多详细信息,请参阅插件文档。
更新日志
中文修订:王苏 2021.02.21
1. 为帮助用户更好地了解 x64dbg 反汇编后的 CPU 汇编指令信息,对汇编指令的“助记符摘要”全部进行了汉化。由于本次更新幅度较大,更改的内容较多,所以对“助记符帮助”进行了部分汉化。汇编指令的汉化参考了“清华大学出版社”出版的《汇编语言程序设计教程》(第4版) 中术语,因此可能与其他软件的汉化术语略有不同。
2. 对 Scylla 插件等进行了全面汉化。
3. 对 x64dbg 帮助文档的主要内容进行了汉化,并按照最新版进行了修订、翻译。对界面字体以及布局重新进行了设置。将默认调用在线英文帮助更改为调用本地的中文帮助文件。
4. 对 x64dbg 官方中文版的汉化错误及不一致处进行了修订,并与帮助文档的关键词进行了统一。
5. 对中文版界面字体进行了重新设置,使其更为美观。
* 集成中文字符串搜索插件, 反反调试插件SharpOD_x64_v0.6b,除此之外无任何修改!