首页
社区
课程
招聘
12月7日升级――OllyMachine v0.20最终版
发表于: 2004-11-15 20:37 66780

12月7日升级――OllyMachine v0.20最终版

2004-11-15 20:37
66780
OllyMachine 0.20最终版发布。

地址: http://www.luocong.com/om

更新如下:

1. 新增:四个新的API:
* WriteMemHexes
* ReadFileIntoMem
* VirtualAllocEx
* VirtualFreeEx

2. 新增:可以对标志位CF, PF, AF, ZF, SF, DF, OF进行操作,例如:

not cf
mov zf, 0
mov pf, 1


3. 新增:可以用别的插件调用OllyMachine,调用方式:

HMODULE hOMDll;
typedef void (__cdecl *RUNOMFILE)(const char *);
RUNOMFILE RunOMFile;

hOMDll = GetModuleHandle("OllyMachine.dll");
// Check that the other plugin is present and loaded
if (hOMDll)
{
// Get address of exported function
RunOMFile = (RUNOMFILE)GetProcAddress(hOMDll, "RunOMFile");
// Check that the other plugin exports the correct function
if (RunOMFile)
{
RunOMFile("test.oms"); // Execute script
RunOMFile("test.omb"); // Execute binary
}
}


4. 修正:在双引号中的双斜线的bug。

5. 修正:在某些算术操作中没有对OllyDbg的寄存器进行操作的bug。

说明:

1、WriteMemHexes用来写一段数据到内存中,举例:

invoke WriteMemHexes, eip, "e800000000"


2、ReadFileIntoMem用来把一个文件读入内存中,并且自动分配一段内存给它,返回内存的起始地址和文件的大小。
注意!使用完后一定要用VirtualFreeEx来释放这段内存,否则会造成内存泄漏!!!
举例:

// Read the file into the memory
// reg01 = memory starting address
// reg02 = filesize
invoke ReadFileIntoMem, "test.exe", indexof reg01, indexof reg02

// Print the file contents byte by byte
mov reg10, reg01
read_file_contents:
invoke ReadMemLong, reg10, 1
invoke PrintNum, reg00, 16
inc reg10
dec reg02
cmp reg02, 0
jne read_file_contents

// Remember to free the memory!!!
invoke VirtualFreeEx, indexof reg01

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 1
支持
分享
最新回复 (244)
雪    币: 266
活跃值: (269)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
2
Many thanks:D :D :D
2004-11-15 20:45
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
3
老罗辛苦  :D
2004-11-15 20:45
0
雪    币: 2199
活跃值: (1975)
能力值: ( LV12,RANK:810 )
在线值:
发帖
回帖
粉丝
4
好东东!
2004-11-15 20:46
0
雪    币: 266
活跃值: (269)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
5
laoluo搞一个chm吧,再次感谢
2004-11-15 20:50
0
雪    币: 1583
活跃值: (831)
能力值: ( LV13,RANK:370 )
在线值:
发帖
回帖
粉丝
6
最初由 jingulong 发布
laoluo搞一个chm吧,再次感谢


搞CHM太麻烦了

这份手册可能会每个版本都不一样的,因为API函数将来肯定会扩充的,等以后再弄吧,OK?

也请大家帮忙测试一下,0.10版的API我基本上是照搬了OllyScript的,少部分增加了一些我自己想到的,如果有哪些API是比较常用的请提出来,谢谢。

习惯了OllyScript的朋友可能会不喜欢:

push XXXX
push YYYY
API_Name

这样的调用方式,如果有这个疑问的话请耐心等候,我想想办法在下个版本中看能不能改进。
2004-11-15 20:55
0
雪    币: 15096
活跃值: (4858)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
7
支持老罗的东东.:D
2004-11-15 21:06
0
雪    币: 392
活跃值: (909)
能力值: ( LV9,RANK:690 )
在线值:
发帖
回帖
粉丝
8
造福万民的好东西,支持:D
2004-11-15 22:20
0
雪    币: 221
活跃值: (55)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
支持老罗
2004-11-15 22:28
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
最初由 jingulong 发布
laoluo搞一个chm吧,再次感谢


呵呵,老罗的好东东要支持一下,送上CHM格式的帮助文件附件:OLLYMACHINE 帮助.rar:D
2004-11-15 23:34
0
雪    币: 339
活跃值: (1510)
能力值: ( LV13,RANK:970 )
在线值:
发帖
回帖
粉丝
11
多谢!
2004-11-15 23:45
0
雪    币: 671
活跃值: (723)
能力值: ( LV9,RANK:1060 )
在线值:
发帖
回帖
粉丝
12
2004-11-16 07:34
0
雪    币: 161
活跃值: (231)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
13
好的东西需要大家来共同参与,大家快来测试啊!
有一个疑问:为什么要多出汇编这一个步骤,直接虚拟执行不可以吗?这样做是不是考虑到和你的反病毒引擎相呼应啊
2004-11-16 08:23
0
雪    币: 229
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
支持!
2004-11-16 08:58
0
雪    币: 258
活跃值: (230)
能力值: ( LV12,RANK:770 )
在线值:
发帖
回帖
粉丝
15
支持~:D
2004-11-16 09:11
0
雪    币: 557
活跃值: (2303)
能力值: ( LV9,RANK:2130 )
在线值:
发帖
回帖
粉丝
16
:D
Good,谢谢,push的方式,不是很习惯;)
建议像masm那样,用一个伪指令invoke等
2004-11-16 09:30
0
雪    币: 1583
活跃值: (831)
能力值: ( LV13,RANK:370 )
在线值:
发帖
回帖
粉丝
17
最初由 采臣・宁 发布
好的东西需要大家来共同参与,大家快来测试啊!
有一个疑问:为什么要多出汇编这一个步骤,直接虚拟执行不可以吗?这样做是不是考虑到和你的反病毒引擎相呼应啊


因为可以只发布字节码啊,比如辛辛苦苦写了一个脚本,不太想公开脚本的源代码了,就可以发布一个编译好的。
2004-11-16 09:41
0
雪    币: 1583
活跃值: (831)
能力值: ( LV13,RANK:370 )
在线值:
发帖
回帖
粉丝
18
最初由 loveboom 发布
:D
Good,谢谢,push的方式,不是很习惯;)


的确,这样不太方便。我会考虑一下怎么解决;)
2004-11-16 09:44
0
雪    币: 1583
活跃值: (831)
能力值: ( LV13,RANK:370 )
在线值:
发帖
回帖
粉丝
19
最初由 昨天 发布


呵呵,老罗的好东东要支持一下,送上CHM格式的帮助文件附件:OLLYMACHINE 帮助.rar:D


谢谢啊,不过为什么我下载不了呢?是不是浏览器要设置点什么?
2004-11-16 09:45
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
20
论坛的一个bug
附件名太长,无法下载
2004-11-16 09:49
0
雪    币: 161
活跃值: (231)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
21
最初由 luocong 发布


因为可以只发布字节码啊,比如辛辛苦苦写了一个脚本,不太想公开脚本的源代码了,就可以发布一个编译好的。

这个想法很好啊。虽然可能没有人会这样做。对此,你能给出一个编译好的例子吗?在调用你的API的时候,字节码的定义是怎么样的?
2004-11-16 10:57
0
雪    币: 1583
活跃值: (831)
能力值: ( LV13,RANK:370 )
在线值:
发帖
回帖
粉丝
22
最初由 采臣・宁 发布

这个想法很好啊。虽然可能没有人会这样做。对此,你能给出一个编译好的例子吗?在调用你的API的时候,字节码的定义是怎么样的?


好的。举个例子,比如说Hello World的源代码 HelloWorld.oms:

///////////////////////////////////////////////////////////////////////////////
//
// FileName : HelloWorld.oms
// Author : Luo Cong
// Date : 2004-11-15
// Comment : HelloWorld!!!
//
///////////////////////////////////////////////////////////////////////////////

lds reg01, "Hello World!"
push reg01
msg


我们可以在OllyMachine的菜单里面选择“Compile”,于是源代码就会被编译成HelloWorld.omb,内容是字节码(bytecode)的形式:

00000000 4F 4D 4C 43 00 0A 11 00 00 00 0D 00 00 00 16 00 OMLC............
00000010 00 00 27 00 00 00 1F 01 00 00 00 00 00 00 00 1C ..'.............
00000020 01 01 00 00 00 24 1E 48 65 6C 6C 6F 20 57 6F 72 .....$.Hello Wor
00000030 6C 64 21 00                   ld!.


以后就可以直接载入这个HelloWorld.omb来运行了,无需源代码。

这样做有两个好处:
1、编译好之后,以后运行就不需要再次执行编译的步骤,如果源文件比较大的话,可以节省一定的时间。
2、可以不发布源代码,只发布字节码文件,在运行效果上是一样的。其实就是相当于我们用C语言写好了程序并编译成EXE,但是在发布的时候只发布那个EXE文件。

其实每次载入脚本文件的时候都会先执行汇编(assemble)步骤的,把源代码编译成字节码之后才传入虚拟机执行。这套字节码的定义、以及字节码文件的格式,如果大家需要的话我找时间整理出来。
2004-11-16 11:47
0
雪    币: 50161
活跃值: (20610)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
23
最初由 luocong 发布


谢谢啊,不过为什么我下载不了呢?是不是浏览器要设置点什么?


附件名最好不要用中文字出现,一般能下载的。
2004-11-16 11:57
0
雪    币: 367
活跃值: (42)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
最初由 kanxue 发布


附件名最好不要用中文字出现,一般能下载的。


应该是不能加 空格,因为空格变成了?就不能下载了,用%20替代就可以
2004-11-16 12:22
0
雪    币: 161
活跃值: (231)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
25
谢谢你的回复!有一个建议,能否把OLLYDBG的异常选项中的功能加入到OM中呢,也就是可以从OM中控制异常的过滤开关。这一点对于脱壳来说是很重要的。因为有时候我们需要用异常来判断壳的运行时。另外建议把这一主题移到插件论坛中去,这样就专业对口了,也可以增强点人气。
2004-11-16 12:34
0
游客
登录 | 注册 方可回帖
返回
//