x64dbg脚本i=i+1咋写?
定义一个变量i=1commentset eip,1 //单句成功注释当前行
如果是程序领空,就执行 F8命令(StepOver),同时注释内容i=i+1
如此重复下去。。。。
mod.party(eip) :获取模块组地址。0 是用户模块,1 是系统模块。
还差一个定义标签
一个比较
一个i=i+1不太会写。。。{:301_971:}
留作悬念,明天继续挑战。。。
inc rax 肿么样 fanvalen 发表于 2021-4-4 14:09
inc rax 肿么样
不是寄存器自增1
而是自定义的注释后缀 cmt rip, "i=i+1" 本帖最后由 冥界3大法王 于 2021-4-8 09:34 编辑
cndml 发表于 2021-4-6 17:47
cmt rip, "i=i+1"
@cndml
首先,感谢精华先生前来解决!
还有一个问题尚未解决,下面的脚本中,注释被最后的结果覆盖了如何解决?
利用输出的脚本固然可以解决有点不甘心,还望抽时间给看看分析下原因,谢谢。
ClearLog //清空日志窗口
vardel a18$ //先清掉原先变量,因x32dbg/x64dbg不会自己清,再运行时就会因重复而报错!写命令清了也白搭还提示,得窗口手动清
var a18$, x0 //首先定义1个Integer型变量为以后的注释内容"MyPath+数字N"作准备,10进制的1你得写成1d或x1(最好用英文否则不显或乱码)
XunHuan:
//msg {a1$+1} 得到2 //msg {$result} //正确
//cmp {mod.party(eip)},0 //这样写也没有报错
cmp mod.party(eip), 0 //当然是先判断一下当前行eip到底是用户领空还是系统领空啦?(两种写法都没有报错)
//其实上边这句也可用mod.system(地址) 或mod.user(地址) 来替换也行
//msg {$result}
inc a18$
/////////////////////////////////var DaQianVA, p:eip 定义成变量,再调用之,也是一样被覆盖掉了!
////////commentset eip, "MyPath"{d:a18$}//{d:来格式化字符串}不然显示的可是16进制的(这行会被覆盖掉,靠,百思不解!)
commentset disasm.sel(), "MyPath"{d:a18$}//输出效果一样,依旧覆盖注释问题没解决
log "commentset "{eip}", MyPath_"{d:a18$} //输出效果比较牛逼!
StepOver //单步执行
jmp XunHuan //跳转到开始重新判断写注释
ret //小节结束
页:
[1]