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

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

2004-11-15 20:37
66781
收藏
免费 1
支持
分享
最新回复 (244)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
126
偶正需要这东东
2004-11-27 11:50
0
雪    币: 1583
活跃值: (831)
能力值: ( LV13,RANK:370 )
在线值:
发帖
回帖
粉丝
127
OllyMachine 0.15版发布。

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

更新如下:

1. 新增:一个新的搜索API:
* Search

2. 新增:两个新的运行API:
* StepIntoS
* StepOverS

3. 新增:五个新的辅助调试API:
* FindProcBegin
* FindProcEnd
* FindPrevProc
* FindNextProc
* FollowCall

说明:

1、StepInto和StepOver由于每次只执行一次,显得不够方便,所以新增StepIntoS和StepOverS来弥补。

例如:

invoke StepOverS, 3


相当于:

stepover
stepover
stepover


注意最后的“S”千万不能忘了写!

2、新增一个搜索API:Search。

Search与Find的不同之处在于,Search并不会从一个合法的Opcode的起始地址开始搜寻。例如:

004010DC 55 PUSH EBP
004010DD 8BEC MOV EBP,ESP
004010DF 6A FF PUSH -1


如果用invoke Find, eip, "EC6AFF",那么不会找到,返回-1;
如果用invoke Search, eip, "EC6AFF",那么会返回004010DE。

3、新增的五个辅助调试API可以用来找到一个函数体的起始和终止地址,有助于自动搜寻和分析程序的流程。具体的用处请自行尝试之。
2004-11-27 21:30
0
雪    币: 221
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
128
赶紧设顶。:)
2004-11-27 21:40
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
129
把老罗的同系列主题合并了一下
方便大家察看

:D
2004-11-27 21:51
0
雪    币: 301
活跃值: (300)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
130
谢谢,更新的真快啊
2004-11-27 21:57
0
雪    币: 1583
活跃值: (831)
能力值: ( LV13,RANK:370 )
在线值:
发帖
回帖
粉丝
131
最初由 fly 发布
把老罗的同系列主题合并了一下
方便大家察看

:D


感谢fly!

跟大家说声对不起,现在这样几乎每天升级可能给大家带来困惑了,不过再过几个版本应该就不会像现在这样疯狂升级了...
2004-11-27 21:58
0
雪    币: 2199
活跃值: (1975)
能力值: ( LV12,RANK:810 )
在线值:
发帖
回帖
粉丝
132
内嵌汇编问题还没有解决
2004-11-27 22:03
0
雪    币: 1583
活跃值: (831)
能力值: ( LV13,RANK:370 )
在线值:
发帖
回帖
粉丝
133
最初由 fxyang 发布
内嵌汇编问题还没有解决


这个功能实现起来比较困难,请容我再研究一会:(
2004-11-27 22:09
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
134
excellent plugin...i going to switch to OM when luocong fix the memory pointer problem....:)

btw...can u fix the "OllyMachine.ini" default save location in OllyDbg folder.
2004-11-27 22:37
0
雪    币: 1583
活跃值: (831)
能力值: ( LV13,RANK:370 )
在线值:
发帖
回帖
粉丝
135
最初由 stephenteh 发布
excellent plugin...i going to switch to OM when luocong fix the memory pointer problem....:)

btw...can u fix the "OllyMachine.ini" default save location in OllyDbg folder.


OK, i'll fix this bug.
Thank you for using OM! :D
2004-11-27 22:43
0
雪    币: 383
活跃值: (786)
能力值: ( LV12,RANK:730 )
在线值:
发帖
回帖
粉丝
136
不如加个Windows系统版本检测的功能命令,看来调试时,利用该命令的返回值作判断会对调试“决策”(比如:脚本是否适用你所使用的系统?)有用的,应该不难实现吧:)
2004-11-27 23:15
0
雪    币: 1583
活跃值: (831)
能力值: ( LV13,RANK:370 )
在线值:
发帖
回帖
粉丝
137
最初由 askformore 发布
不如加个Windows系统版本检测的功能命令,看来调试时,利用该命令的返回值作判断会对调试“决策”(比如:脚本是否适用你所使用的系统?)有用的,应该不难实现吧:)


不难,下个版本中加入。;)
2004-11-27 23:36
0
雪    币: 383
活跃值: (786)
能力值: ( LV12,RANK:730 )
在线值:
发帖
回帖
粉丝
138
最初由 luocong 发布


不难,下个版本中加入。;)


呵呵,thanks,是这样了的,举个实际例子:
在98想汇编一个 call KERNEL32.CloseHandle

asm "call KERNEL32.CloseHandle"

你会发现无法汇编
应该改为:

asm "call KERNEL32.FindCloseChangeNotification"

那就需要知道你的系统是什么才能决定用那个汇编命令等等。

还想你实现这个功能(可能不好玩):

能否实现 Ctrl+G 的功能(前往某个地址,主要实现对于是for cup的[代码窗口和内存窗口]),比方说,我们用刚写好的脚本运行补丁了某个地址,不知所补丁的代码是否写对或有遗留,想到该地址浏览核对(如果不明确核对,可能一运行就有麻烦,而且可能该地址是运算取得的,即使能输出那地址,还要复制来复制去,再Ctrl+G那地址,很烦的,是吗?)。:D
2004-11-28 10:41
0
雪    币: 1583
活跃值: (831)
能力值: ( LV13,RANK:370 )
在线值:
发帖
回帖
粉丝
139
最初由 askformore 发布


呵呵,thanks,是这样了的,举个实际例子:
在98想汇编一个 call KERNEL32.CloseHandle

........


没问题,很容易实现。;)
2004-11-28 12:14
0
雪    币: 1583
活跃值: (831)
能力值: ( LV13,RANK:370 )
在线值:
发帖
回帖
粉丝
140
OllyMachine 0.16版发布。

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

更新如下:

1. 新增:内嵌汇编功能:__asm { }
2. 新增:三个新的API:
* IsWinNTKernel
* GotoCpuAddr
* GotoDumpAddr

说明:

1、内嵌汇编功能,必须使用以下的形式调用:
__asm
{
mov eax, 1
push 0
call ExitProcess
}


注意事项:
1、可以使用“//”、“;”作为行注释,“/* */”作为块注释。
2、不允许使用OllyMachine的寄存器。
3、内嵌汇编也是要经过编译的,如果编译后的大小超过2046个字节,则必须把一个大的__asm{}块分开成几个小的块。

例如:

__asm
{
mov eax, 1
// ...
// ...
mov ecx, 1
}


如果编译器提示内嵌汇编经过编译后的字节数太大的话,则可以把这个大的块分成两个小块:

__asm
{
mov eax, 1
// ...
}
__asm
{
// ...
mov ecx, 1
}


一直这样分解下去,直到编译器不出错误提示为止。
实际上2046个字节对于大多数情况来说应该已经足够了,如果不够的话我可以增加。

2、IsWinNTKernel的示例:

invoke IsWinNTKernel
cmp reg00, 1 // it is NT kernel!
je WinNT
// ...
WinNT:
// ...


它的返回值:1 表示是NT内核(Windows NT/2000/XP),0 表示不是(Windows 95/98/Me)。

3、GotoCpuAddr用来跳转到反汇编窗口的address地址处。GotoDumpAddr用来跳转到Dump窗口的address地址处。示例:

invoke GotoCpuAddr, 0x401300
2004-11-28 14:20
0
雪    币: 1583
活跃值: (831)
能力值: ( LV13,RANK:370 )
在线值:
发帖
回帖
粉丝
141
补充一点:由于内嵌汇编的模块需要我改造原有的词法分析器以及部分语法分析器,所以在目前的内嵌汇编中有些语句是不支持的(主要是我还没写好,所以暂时屏蔽),例如:

mov eax, [ecx]
mov eax, [ecx * 2]


请等待下一个版本的完善。
2004-11-28 15:26
0
雪    币: 2199
活跃值: (1975)
能力值: ( LV12,RANK:810 )
在线值:
发帖
回帖
粉丝
142
感谢老罗!
2004-11-28 15:29
0
雪    币: 1583
活跃值: (831)
能力值: ( LV13,RANK:370 )
在线值:
发帖
回帖
粉丝
143
请fxyang帮忙测试一下啊!我个人感觉内嵌汇编不支持OllyMachine的寄存器,这是不够方便的,但我暂时还没想到解决的方法。另外我不知道内嵌汇编的速度够没有,也不知道有没有什么大的bug,因为这个模块真的是很难写,我研究了好几天才做了个勉强能用的模块出来,希望能尽早发现里面隐藏的bug。
2004-11-28 15:39
0
雪    币: 2199
活跃值: (1975)
能力值: ( LV12,RANK:810 )
在线值:
发帖
回帖
粉丝
144
测试中
2004-11-28 15:56
0
雪    币: 2199
活跃值: (1975)
能力值: ( LV12,RANK:810 )
在线值:
发帖
回帖
粉丝
145
_asm
{
   PUSHAD
   PUSH EDX
   push 0
   push 0
   CALL kernel32.CreateMutexA
   POPAD
   jmp kernel32.OpenMutexA
}

出现如下错误:

请老罗检查看看
2004-11-28 16:23
0
雪    币: 1583
活跃值: (831)
能力值: ( LV13,RANK:370 )
在线值:
发帖
回帖
粉丝
146
最初由 fxyang 发布
_asm
{
PUSHAD
PUSH EDX
push 0
........


OK,感谢测试!
我正在努力修改中...
2004-11-28 17:24
0
雪    币: 319
活跃值: (2459)
能力值: ( LV12,RANK:980 )
在线值:
发帖
回帖
粉丝
147
等成熟了再来用:D
2004-11-28 17:41
0
雪    币: 2199
活跃值: (1975)
能力值: ( LV12,RANK:810 )
在线值:
发帖
回帖
粉丝
148
sorry!老罗
是我的脚本语法错误,不是内嵌汇编问题!
2004-11-28 19:18
0
雪    币: 2199
活跃值: (1975)
能力值: ( LV12,RANK:810 )
在线值:
发帖
回帖
粉丝
149
提醒一下:
__asm {} 前面的下划线是双下划线
2004-11-28 19:24
0
雪    币: 2199
活跃值: (1975)
能力值: ( LV12,RANK:810 )
在线值:
发帖
回帖
粉丝
150
OM如下:
HideOD

EOE exception1
invoke GetProcAddress, "OpenMutexA","kernel32.dll"
mov reg01,reg00
invoke bp reg01
eob II2I
run

exception1:
mov reg05,eip
cmp eip,reg05
jb begin
esto

begin:
run

II2I:
__asm
{
   PUSHAD
   PUSH EDX
   push 0
   push 0
   CALL CreateMutexA
   POPAD
   jmp OpenMutexA
}
//完成双进程到单进程的转换
invoke bc reg01

现在运行到了__asm的代码中,出现了这样的错误提示:
2004-11-28 20:09
0
游客
登录 | 注册 方可回帖
返回
//