首页
论坛
课程
招聘
[原创]OD LUA 插件
2012-4-10 18:32 37445

[原创]OD LUA 插件

2012-4-10 18:32
37445
上个帖子发错地方了,发这里比较合适.

最近迷上了lua,简单,高效,几乎能做任何c/c++可以实现的功能,边学边实践,就萌发了写lua插件的想法。
目前插件DLL部分基本不需要再修改,需要其他功能自己写脚本就可以,或者提出有好想法我也可以帮忙实现。

插件下载:更新日期2012-4-11
LuaPlugindev.rar

基本介绍:
核心脚本在LuaScripts\init目录内,可自行修改。
用luajit从OD导出表获取API,可实现C版本插件所有功能。
使用lua简化开发步骤,虽然没有深度封装API,但使用脚本开发的好处是不言而喻的。

字符串查询脚本:
1.写了个查询字符串的例子,包括显示窗口和弹出菜单,给想写插件的朋友一个参考。
2.找出的字符串,可以用lua的匹配模式进一步查找.
看图,左边是查询出的字符串,右边log窗口是 查找包含”Olly“字符的结果窗口。


添加脚本:
保存断点和恢复断点 SaveLoadBreakPoint.lua
断点保存表默认文件名为当前调试进程名,保存在OD目录内。
读取断点默认读取当前进程名的.breakpoint文件。

搜索汇编代码:
FindAsmCode.lua 脚本 先输入dofile("OD全路径/FindAsmCode.lua") 加载初始化,然后执行。

搜索所有包含 "fs:"字符的代码,结果显示在log文件。


硬件条件断点:
添加了ODBG_Pausedex 回调函数,可对断下后的数据进行条件判断,下面是硬件条件断点的例子。

但是有个小问题,每次断下的时候OD会刷新CPU窗口各种数据,造成速度很慢,但是吧OD最小化就没有速度影响了。
看Plugin API里没有关于让OD停止刷新窗口数据的方法,有这方面经验的朋友请指教下。

--硬件断点事件
function OnHWBREAK(reason,extdata,reg,debgevent)
	if ret ~= 0 then
		local treg = ffi.cast("t_reg *",reg)
		if treg then
			local Msg = Expression("DWORD [esp + 08]")
			local Key = Expression("DWORD [esp + 0C]")
			if Msg == WM_KEYDOWN then
				Od.Addtolist(treg.ip,1,string.format("硬件断点键盘按下 = %s",string.char(Key)))
				return 0
			else
				--F9运行
				Od.Sendshortcut(0,0,WM_KEYDOWN,0,0,0x78)
				return 1
			end
		end
	end
end


[注意] 招人!base上海,课程运营、市场多个坑位等你投递!

上传的附件:
收藏
点赞0
打赏
分享
最新回复 (43)
雪    币: 672
活跃值: 活跃值 (100)
能力值: ( LV13,RANK:460 )
在线值:
发帖
回帖
粉丝
FishSeeWater 活跃值 11 2012-4-10 19:04
2
0
好,赞赏~!!
雪    币: 34
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
蓝色妖女 活跃值 2012-4-10 23:30
3
0
这 lua 玩得确实太牛了
雪    币: 1276
活跃值: 活跃值 (708)
能力值: (RANK:215 )
在线值:
发帖
回帖
粉丝
china 活跃值 5 2012-4-10 23:41
4
0
膜拜啊,收藏了,期待出更多作品。
雪    币: 1259
活跃值: 活跃值 (292)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Crakme 活跃值 2012-4-11 10:07
5
0
LUA还可以这么用   长见识
雪    币: 157
活跃值: 活跃值 (265)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
我是土匪 活跃值 4 2012-4-11 10:51
6
0
非常好,喜欢这个插件啊。

od加载程序出错啊
上传的附件:
雪    币: 893
活跃值: 活跃值 (10)
能力值: ( LV9,RANK:330 )
在线值:
发帖
回帖
粉丝
jasonnbfan 活跃值 8 2012-4-11 14:36
7
0
[QUOTE=我是土匪;1062758]非常好,喜欢这个插件啊。

od加载程序出错啊
[/QUOTE]

sorry 请下新版本修改了这个问题。
雪    币: 564
活跃值: 活跃值 (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
lixupeng 活跃值 2012-4-12 01:07
8
0
谢谢了学习下lua
雪    币: 49
活跃值: 活跃值 (16)
能力值: ( LV15,RANK:520 )
在线值:
发帖
回帖
粉丝
邓韬 活跃值 9 2012-4-12 02:35
9
0
膜拜+谢谢。不懂Lua
雪    币: 82
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
星际 活跃值 2012-4-12 08:11
10
0
attempt to call a nil value
我用的版本是0llyICE v1.10

32-bit Assembler-
雪    币: 306
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
天法道 活跃值 2012-4-12 08:20
11
0
好啊。楼主。
雪    币: 947
活跃值: 活跃值 (25)
能力值: ( LV12,RANK:440 )
在线值:
发帖
回帖
粉丝
loongzyd 活跃值 10 2012-4-12 08:23
12
0
谢谢楼主啊= =
雪    币: 205
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
siluplsy 活跃值 2012-4-13 15:01
13
0
收下,3qs a lot!! 正想写插件,略懂lua
雪    币: 82
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
星际 活跃值 2012-4-13 17:04
14
0
我下的已经是新版本了的,为啥还是报attempt to call a nil value,我用的是0llyICE。
雪    币: 893
活跃值: 活跃值 (10)
能力值: ( LV9,RANK:330 )
在线值:
发帖
回帖
粉丝
jasonnbfan 活跃值 8 2012-4-13 17:12
15
0
启动的时候报错?给个图,看看详细。
雪    币: 212
活跃值: 活跃值 (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
唯一色彩 活跃值 2012-4-17 20:10
16
0
这个支持OD 2.01 么?
雪    币: 220
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
广海混沌 活跃值 2012-4-17 20:32
17
0
呵呵 出现这个问题的原因是没有放对目录,直接把最新版解压到当前目录就行
plugin 和 LuaScripts 目录要放到OD的根目录里面,也就是同级的
雪    币: 421
活跃值: 活跃值 (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
guobing 活跃值 2012-4-17 21:00
18
0
有那么点小猛, 真狠刚学lua~·
雪    币: 0
活跃值: 活跃值 (24)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
tihty 活跃值 2 2012-4-17 21:47
19
0
不懂lua
雪    币: 3476
活跃值: 活跃值 (375)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
guleji 活跃值 2012-4-18 06:01
20
0
貌似新版的FindString.lua脚本不正常
用8号那个版本的FindString.lua就正常
雪    币: 82
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
星际 活跃值 2012-4-18 13:42
21
0
终于明白 LuaScripts  这个目录也是要挎过去的。谢谢楼上几位。
雪    币: 279
活跃值: 活跃值 (15)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
liuyq 活跃值 2012-4-18 20:47
22
0
lz,你可以研究一下,使用跟踪技术,不要读一句就让它调用PauseEx回调函数,跟踪是设置步长的,比如设为10000条语句调用一次PauseEx回调
雪    币: 199
活跃值: 活跃值 (25)
能力值: ( LV10,RANK:160 )
在线值:
发帖
回帖
粉丝
hellok 活跃值 3 2012-4-18 22:22
23
0
支持.dingqi
雪    币: 276
活跃值: 活跃值 (23)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
星辰 活跃值 2012-5-1 16:19
24
0
残念!完全不会用 = =
执行文件跟执行脚本的区别跟用法谁可以说说阿!
雪    币: 196
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
enjon 活跃值 2012-5-17 22:17
25
0
赞,好谢谢分享
游客
登录 | 注册 方可回帖
返回