能力值:
( LV13,RANK:370 )
201 楼
CopyBytesTo是由某位隐姓埋名的朋友所提的需求,据说用来恢复stolencode有一定的效果,不过我不知道是否真的有效,因为我不懂破解...
另外诚如OllyDbg所说的,越测试将会越稳定,请大家多帮忙测测啊,找到一个bug我就解决一个,很快就能稳定的了。
能力值:
( LV12,RANK:730 )
202 楼
1.8版 以后的版本能否将 “编译”和“运行”菜单每次成功选择脚本时所打开窗口的目录位置进行记录(可记录到 OllyMachine.ini),使得编译或运行脚本时,打开的位置合理些,不用再去找OMs的脚本所在目录(现在好像都采用每次总先打开 OD 目录)。比如我都想:OllyScript的脚本为 OllyScripts 目录,OllyMachine 的脚本为 OllyMachines 目录,或别的。
1.8以后的版本在 编译时,我个人觉得,没必要去再确认 .oms的文件名,只会浪费时间去点击,要不你直跑“运行”好了,直接取与源文件相同的文件名和相同的目录就好了,反正它们是有扩展名的区别的,不是吗?
在1.7版 每当执行了 __asm 块时,都强行要求进行一次 “分析”,似乎不大好,何况如果程序比较大,分析一次会比较长,若你使用的 __asm 块比较多,岂不是 分分钟 都要 “分飞燕”(虽然空格容易“击中”,我可不想那么“激”,更何况有时分析后会面目全非,对于眼睛先前的概念 适不其反)!
*/
/*
内嵌汇编功能添加的看法:
要实现内嵌汇编要解决的问题有:
1.语法转换(基本要求,作者的爱因斯坦)
2.__asm 块运行监控(假定运行中出了异常时,是怎么办?是否报错撤消代码并halt?还是询问用户进行分支处理?还是...)
3.运行内嵌汇编前的eip是否需要恢复,恢复以何种形式最方便最少影响实现(push save_eip+ret 或jmp save_eip或还有别的)?
4.内嵌汇编运行到什么时候可认为是结束(不再需要,并可撤消代码)
本人认为(仅为愚见,可不当真),如果在后续版本加标签功能,不妨在__asm块中定义特殊的“恢复 eip 标识” @eip (放在{}内的开头,在一个 __asm 块中最多仅能只有一个 @eip,有则表示脚本在执行完 __asm 块时需要虚拟机代为修正到原来的 eip;没有,则不干此事)和“出口标识”(即执行到或遇到该标识,那么表示它下面紧接着的那1条即将被执行的指令是最后一条指令,一旦那条指令被执行了,就可以回收代码或还原代码,看看是否有必要修正 eip,没有则停下) : @exit,在一个 __asm 块中最多仅能只有一个 @exit,如果用户把 @exit 的位置放到不合理的地方,就不关 __asm 的问题了!
@eip和@exit 只是特殊标识,不算是标签,标签的定义是字母、下划线和数字...
现在OllyMachine还不支持间接寻址运算难免肯定它的实用性,比如 :mov reg01,[eax]
__asm 能否少一个下划线
最后,luocong兄弟要保重身体,看见兄弟天天升级,毅力可赞,虽然你是公认的“牛”,有时放松一下,未尝不是好事,OllyMachine 的未来还是很值得期代的...老罗的 API 太多了啊...我能全记上就好了...
能力值:
(RANK:215 )
203 楼
askformore 支持!
小罗,把waht's new 放到你的包里不成吗?每次都得让我上站点上来看看更新了什么,连你站点上都没有,郁闷。
能力值:
( LV13,RANK:370 )
204 楼
最初由 china 发布 askformore 支持! 小罗,把waht's new 放到你的包里不成吗?每次都得让我上站点上来看看更新了什么,连你站点上都没有,郁闷。
有的啊,在“历史”那里,从手册的目录可以找到的,呵呵。
能力值:
( LV13,RANK:370 )
205 楼
最初由 askformore 发布 1.8版 以后的版本能否将 “编译”和“运行”菜单每次成功选择脚本时所打开窗口的目录位置进行记录(可记录到 OllyMachine.ini),使得编译或运行脚本时,打开的位置合理些,不用再去找OMs的脚本所在目录(现在好像都采用每次总先打开 OD 目录)。比如我都想:OllyScript的脚本为 OllyScripts 目录,OllyMachine 的脚本为 OllyMachines 目录,或别的。 1.8以后的版本在 编译时,我个人觉得,没必要去再确认 .oms的文件名,只会浪费时间去点击,要不你直跑“运行”好了,直接取与源文件相同的文件名和相同的目录就好了,反正它们是有扩展名的区别的,不是吗? 在1.7版 每当执行了 __asm 块时,都强行要求进行一次 “分析”,似乎不大好,何况如果程序比较大,分析一次会比较长,若你使用的 __asm 块比较多,岂不是 分分钟 都要 “分飞燕”(虽然空格容易“击中”,我可不想那么“激”,更何况有时分析后会面目全非,对于眼睛先前的概念 适不其反)! ........
太感谢了!考虑中...有你们的支持我一定会尽量把它做好,虽然进度可能会比较慢...
能力值:
( LV9,RANK:970 )
206 楼
Thank you.
最近不开发金山独霸了 ? 还是利用 业余时间 开发 OM?
你开发 OM 的目的是什么? :D
能力值:
( LV13,RANK:370 )
207 楼
最初由 simonzh2000 发布 Thank you. 最近不开发金山独霸了 ? 还是利用 业余时间 开发 OM? 开发 OM 的目的是什么?:D
1、利用业余时间。
2、我一直以来都想写个编译器(哪怕再简单也好),正好可以用OM来完成我这个心愿。;)
能力值:
( LV9,RANK:210 )
208 楼
OllyMachine能不能自定义变量名啊?只能是reg00-reg64吗?看起来比较累!不知说的对不对?
能力值:
( LV13,RANK:370 )
209 楼
最初由 wangli_com 发布 OllyMachine能不能自定义变量名啊?只能是reg00-reg64吗?看起来比较累!不知说的对不对?
不能自定义变量名,只能是reg00 ~ reg64,我估计也没有时间去改进这个了,很抱歉。
能力值:
( LV13,RANK:370 )
210 楼
OllyMachine 0.19版发布。
地址:
http://www.luocong.com/om
更新如下:
1. 新增:一个新的输出API:
* UpdateDumpBuf
2. 新增:三个新的跟断点相关的API:
* EOBINT3
* EOBHW
* EOBMEM
说明:
1、UpdateDumpBuf是用来更新某个已经存在的dump窗口的数据的,这在分析网络封包的时候比较有用。
示例:
// Create a new dump window: invoke PrintBufToNewDump, "New Dump Window", eip, 0x100 // Save its hwnd: mov reg01, reg00 //... // Update it: invoke UpdateDumpBuf, reg01, eip, 0x200
首先用PrintBufToNewDump创建了一个dump窗口,并且保存了dump窗口的句柄,后面就可以用UpdateDumpBuf来更新这个dump窗口了。
2、三个跟断点相关的API是:EOBINT3、EOBHW、EOBMEM,它们可以用来分别对付不同的断点,举例如下:
EOBInt3 OnInt3 EOBHW OnHardware EOBMEM OnMemory // set hardware breakpoint: invoke GetNextOpAddr, eip, 1 invoke bphws, reg00, 1 // ... (set other type of breakpoint) run halt OnInt3: invoke msg, "Int3 breakpoint occured!" halt OnHardware: invoke msg, "Hardware breakpoint occured!" OnMemory: invoke msg, "Memory breakpoint occured!" halt
能力值:
(RANK:215 )
211 楼
跟上,尽管还没开始学习使用。
能力值:
( LV9,RANK:1210 )
212 楼
支持!
不过,我还是想等版本稳定下来再学。
刚习惯了osc:D
另外,就感兴趣的指令查了一下说明。WriteMemLong能否提供
类似osc的
mov [ecx], #00DEAD00BEEF00#
功能,只限制在1-4 byte不大方便。
能力值:
( LV13,RANK:370 )
213 楼
感谢楼上两位的支持,我过几天可能还会发一次0.20版,那个版本应该就是最终版了。:D
能力值:
( LV13,RANK:370 )
214 楼
最初由 softworm 发布 另外,就感兴趣的指令查了一下说明。WriteMemLong能否提供 类似osc的 mov [ecx], #00DEAD00BEEF00# 功能,只限制在1-4 byte不大方便。
收到!
能力值:
( LV9,RANK:2130 )
215 楼
最初由 luocong 发布 感谢楼上两位的支持,我过几天可能还会发一次0.20版,那个版本应该就是最终版了。:D
不会吧,这么快
,v0.2就是源码共享日?:D
能力值:
( LV12,RANK:980 )
216 楼
先把手册打印出来学习:D
能力值:
( LV2,RANK:10 )
217 楼
有个问题想请教,如果我要在程序运行到某个指定地址,满足某个指定条件后就断下,比如在0x122333处,如果eax == 2就中断,该怎么编写脚本?
我自己编了一个,但却是死循环,希望大大们帮忙改改
begin:
mov reg00,eip
cmp reg00,0x122333
jne begin
cmp eax,2
jne begin
invoke BP,eip
halt
还希望罗老大帮帮忙。
谢谢各位!
能力值:
( LV13,RANK:370 )
218 楼
试试用条件断点:
invoke BPCND, 0x122333, "eax == 2"
run
能力值:
( LV2,RANK:10 )
219 楼
好的,谢谢老大!
能力值:
( LV2,RANK:10 )
220 楼
最初由 tane 发布 //修正后的UPX脚本 /////////////////////////////////////////////////////////////////////////////// // // FileName : UPX.oms // Author : Luo Cong ........
看着别扭,改了一下:)
invoke FindOpcode, eip, 0x61
invoke Go, reg00
invoke stepovers,2
invoke InputText, "Please input filename for dump"
invoke DumpAsPE, FreeBufferReg, eip
能力值:
( LV2,RANK:10 )
221 楼
既然增加自定义变量很困难
是否可以增加一个typedef呢? :)
譬如typedef reg00 pStr
以后代码里使用pStr即可
做一个影射表,应该不会困难吧
能力值:
( LV2,RANK:10 )
222 楼
谢谢
能力值:
( LV2,RANK:10 )
223 楼
能力值:
( LV13,RANK:370 )
224 楼
最初由 playar 发布 看着别扭,改了一下:) invoke FindOpcode, eip, 0x61 invoke Go, reg00 ........
确实是简洁多了!:D
能力值:
( LV13,RANK:370 )
225 楼
最初由 playar 发布 既然增加自定义变量很困难 是否可以增加一个typedef呢? :) 譬如typedef reg00 pStr 以后代码里使用pStr即可 做一个影射表,应该不会困难吧
需要一定的时间。其实并不是在技术上做不到自定义变量的功能,而是我现在没有那么多时间去修改原来的词法和语法分析器了。