冥界3大法王 发表于 2021-4-3 22:25

x64dbg脚本i=i+1咋写?

定义一个变量i=1                     
commentset eip,1                     //单句成功注释当前行
如果是程序领空,就执行          F8命令(StepOver),同时注释内容i=i+1
如此重复下去。。。。

mod.party(eip) :获取模块组地址。0 是用户模块,1 是系统模块。


还差一个定义标签
一个比较
一个i=i+1不太会写。。。{:301_971:}
留作悬念,明天继续挑战。。。

fanvalen 发表于 2021-4-4 14:09

inc rax 肿么样

冥界3大法王 发表于 2021-4-5 12:13

fanvalen 发表于 2021-4-4 14:09
inc rax 肿么样

不是寄存器自增1
而是自定义的注释后缀

cndml 发表于 2021-4-6 17:47

cmt rip, "i=i+1"

冥界3大法王 发表于 2021-4-8 09:32

本帖最后由 冥界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]
查看完整版本: x64dbg脚本i=i+1咋写?