在OD2.01脚本插件ODbgScript2.03(作者tpruvot等)的基础上,进行了部分命令的修正和增加。在about里有ODbgScript2.03的下载地址带源码。(更新到odbgscript2.18(v8版本,建议下载此版本),传送门)
1、增加DOJS命令(==$$),我称为“撸串”命令,你给它一个js字符串,它还你一个精彩的js人生. DOJS丰富了原有脚本命令,如虎添翼,可以对数据源进行强大的处理。
DOJS可以执行JavaScript语言命令(js)和计算字符串表达式,返回最后一个表达式或命令的结果给$RESULT 。js是面向网页编程的语言,包括前端和后端编程,相当强大,支持各类数据的处理、函数调用、控制语句、类及方法、操作本地文件等. 现在, DOJS带你走进js世界。参见附件范例TEST-DOJS使用。实际使用传送门。
如:
--------------------------计算字符串表达式和调用js对象方法------------------------------
DOJS "3+4" // $RESULT= 7
DOJS "3+4*5-6==17" //$RESULT= TRUE
$$ "new Date().toLocaleString()" //$RESULT= 2016年10月4日 15:55:36
-----------------------------------调用自定义函数---------------------------------------
var x="'do'", y="'js'" //提示:eval 的替换{ }符号,更改为@ #
eval "function myname(c,d){ return c+d;};myname(@x#,@y#);"
$$ $RESULT //$RESULT= "dojs"
----------------------------------使用js数组和if语句------------------------------------
eval "var a='apple', b=[1,'apple',2,'pear']; if(a==b[1]){'yes'}else{'no'}"
$$ $RESULT //$RESULT="yes"
----------------------------------使用do-while循环--------------------------------------
mov j,20 // pass a var
eval "var i=@j#, x=3; do{x=i+1;i--} while(i>5); parseInt(x,16);"
$$ $RESULT
inc $RESULT //$RESULT=8
---------------------------------------使用for循环---------------------------------------
eval "var k=@j#; for(var i=1;i<k;i++){var x=i}; parseInt(x,16);"
dojs $RESULT //$RESULT=19
------------------------------------使用while循环----------------------------------------
eval "var i=@j#, k=1; while(i>3){ i--; k++; }; parseInt(k,16);"
dojs $RESULT //$RESULT=18
特别注意安全事项:因DOJS可以执行js命令,所以当然可以执行操作本地文件,比如删除、运行、复制文件,修改注册表、添加权限用户、开关机等,已亲测可行,有安全隐患。所以对于运行外来脚本时,要确认是否有恶意js命令。操作本地文件的一个例子:传送门
2、增加SWITCH-CASE命令(辅助命令BREAKS,ENDSW)比较简单的匹配数字、字符或串的使用。参见附件范例TEST-SWITCH使用。如果想使用较为复杂的switch-case,请用撸串命令,见范例TEST-DOJS使用说明。
如1:简单使用switch命令
var choice=2, s
switch choice
default:
tmsg " 不匹配case,或者可以做些缺省的任务", 6.228
breaks
case 1:
mov s, " 只因为在人群中多看了你一眼 。"
breaks
case 2:
mov s, " 我就是我,是颜色不一样的烟火。"
breaks
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
最后于 2019-3-18 15:00
被ssarg编辑
,原因: