原型:static int add(lua_State *L);//only a test
执行脚本:c = add(a,b)
功能:将两个数a、b相加,结果放在c当中
原型:static int LMessageBox(lua_State *L);//show a messagebox,:),messagebox("hello,world!")
执行脚本:messagebox(string)
功能:显示一个消息框,消息的内容是参数string的值,参数string必须是一个字符串类型
示例:
①
a = "hello world!" --声明一个字符串类型的变量
messagebox(a)
②
messagebox("hello world!") --直接使用字符串作为参数传入
原型:static int LGetFlTheFirstRow(lua_State *L);//getTheFirstRow,GetFlTheFirstRow(),return addr and par
执行脚本:addr,par1,par2,par3,par4 = getflthefirstrow()
功能:得到显示列表中第一行的地址及第一行的四个域分别显示的字符串,其中addr为地址,par1,par2,par3,par4分别是对应的四个字符串的值
原型:static int LGetFlTheLastRow(lua_State *L);//getTheLastRow,GetFlTheLastRow(),return addr and par
执行脚本:addr,par1,par2,par3,par4 = getflthelastrow()
功能:得到显示列表中最后一行的地址及最后一行的四个域分别显示的字符串,其中addr为地址,par1,par2,par3,par4分别是对应的四个字符串的值
原型:static int LGetFlTheNextRow(lua_State *L);//getTheNextRow,GetFlTheNextRow(addr),return addr and par
执行脚本:addr1,par1,par2,par3,par4 = getflthenextrow(addr2)
功能:得到当前行的下一行的地址及四个域分别显示的字符串,其中addr1为上一行的地址,par1,par2,par3,par4分别是对应的四个字符串的值,addr2为当前行地址
示例:
addr_p = getflthefirstrow() --得到第一行的地址
addr,par1,par2,par3,par4 = getflthenextrow(addr_p) --得到第二行的地址及对应四个域的字符串,addr_p参数是上一行的地址
原型:static int LSetFlText(lua_State *L);//setFlText,SetFlText(addr,index,string),null
执行脚本:setfltext(addr,index,string)
功能:将地址addr所指向的那一行的第index个域改为string的值,index从零开始计数
原型:static int LReadAByteFromFile(lua_State *L);//read a byte from image file,ReadAByteFromFile(addr),return number
执行脚本: readbyte = readabytefromfile(addr)
功能:从被调试进程的地址addr读取一个字节
原型:static int LGetString(lua_State *L);//get a string from addr,GetString(addr),return string
执行脚本:str = getstring(addr)
功能:从被调试进程的地址addr读取一个字符串,该字符串必须以零结尾,长度不能大于256个字节
//DeBug APIs
原型:static int LDDebugLoad(lua_State *L);//load a pe file to debug,null
执行脚本:ddebugload()
功能:加载当前反汇编的文件以备动态调试
原型:static int LDSetBreakPoint(lua_State *L);//set a break point,return null
执行脚本:dsetdebugbreakpoint(addr)
功能:在addr处设置断点,需要注意的是,在加载之后必须先设置一个断点之后才能在这个断点响应之后进入调试回调主函数
原型:static int LDRegisterMainFunc(lua_State *L);//register a call back function for break point,RegisterMainFunc(name),return null,call function need a address of breakpoint
执行脚本:registermainfunc(name)
功能:注册脚本调试回调主函数,参数name是函数名。调试主函数的意思是说,当被调试的程序遇到一个断点时,DSASMER就回调这个函数,并由这个函数对断点进行进一步的处理,例如获取某一个寄存器的值,或是再下另一个断点,或是对被调试程序做某些修改等等。回调函数的声明必须在注册之前。
示例:
main(addr)--addr是响应断点的地址
if(addr=breakpointaddr)
--dosomething
end
end
registermainfunc("main")