能力值:
( LV13,RANK:370 )
|
-
-
151 楼
我刚才跟踪了一下,是一个bug――在编译阶段计算jmp OpenMutexA的长度出错了,sorry!明天、最迟后天请来看看,0.17版里面会对内嵌汇编进行大规模的修正的。:)
|
能力值:
( LV12,RANK:810 )
|
-
-
152 楼
呵呵,不急。
另外:OM中的esto 没有作用。
|
能力值:
( LV13,RANK:370 )
|
-
-
153 楼
最初由 fxyang 发布 呵呵,不急。 另外:OM中的esto 没有作用。
esto不起作用的意思是……?无法运行,还是无法被中断下来?如果是后者的话,能不能上传你的调试程序以及脚本,以方便我进行查错?或者发e-mail给我可以吗?我的e-mail是 admin@luocong.com
|
能力值:
( LV12,RANK:810 )
|
-
-
154 楼
我调试的程序是Armadillo 3.76版主程序,OM如下:
HideOD
EOE exception1
invoke GetProcAddress, "OpenMutexA","kernel32.dll"
mov reg01,reg00
invoke bp reg01
eob II2I
run
exception1: //异常处理
esto //相当于Shift+F9,应该越过这个异常
II2I:
__asm
{
PUSHAD
PUSH EDX
push 0
push 0
CALL CreateMutexA
POPAD
jmp OpenMutexA
}
//完成双进程到单进程的转换
invoke bc reg01
但是异常发生后停在异常代码处,并没有和执行了Shift+F9一样越过了这个异常,而是停止了。
请老罗检查看看
|
能力值:
( LV13,RANK:370 )
|
-
-
155 楼
|
能力值:
( LV13,RANK:370 )
|
-
-
156 楼
Armadillo 3.76没下到,下了个3.78的...
经过测试,前面两个exception是可以通过esto越过去的,但是从第三个开始就不行了。 :(
不知道fxyang兄遇到的是不是同样的情况?请留个言,以便我进行修正。
|
能力值:
( LV12,RANK:810 )
|
-
-
157 楼
同样的问题,第三个异常停了。
|
能力值:
( LV13,RANK:370 )
|
-
-
158 楼
改了几个小时,重写了内嵌汇编模块,用fxyang的那个脚本测试了一下Armadillo 3.78的主程序,脚本狂跑了一段时间,最后停在了OpenMuteA处:
7C80EC1B > 8BFF MOV EDI,EDI 7C80EC1D 55 PUSH EBP 7C80EC1E 8BEC MOV EBP,ESP 7C80EC20 51 PUSH ECX 7C80EC21 51 PUSH ECX 7C80EC22 837D 10 00 CMP DWORD PTR SS:[EBP+10],0 7C80EC26 56 PUSH ESI 7C80EC27 0F84 7A500300 JE kernel32.7C843CA7 7C80EC2D 64:A1 18000000 MOV EAX,DWORD PTR FS:[18] 7C80EC33 FF75 10 PUSH DWORD PTR SS:[EBP+10] 7C80EC36 8DB0 F80B0000 LEA ESI,DWORD PTR DS:[EAX+BF8] 7C80EC3C 8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8] 7C80EC3F 50 PUSH EAX 7C80EC40 FF15 8C10807C CALL DWORD PTR DS:[<&ntdll.RtlInitAnsiSt>; ntdll.RtlInitAnsiString 7C80EC46 6A 00 PUSH 0 7C80EC48 8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8] 7C80EC4B 50 PUSH EAX 7C80EC4C 56 PUSH ESI 7C80EC4D FF15 8810807C CALL DWORD PTR DS:[<&ntdll.RtlAnsiString>; ntdll.RtlAnsiStringToUnicodeString 7C80EC53 85C0 TEST EAX,EAX 7C80EC55 0F8C 36500300 JL kernel32.7C843C91
不知道正不正确?
|
能力值:
( LV2,RANK:10 )
|
-
-
159 楼
在OllyScript V0.92中可以
我可以用使用
findop eip, #00C3#命令
来查找并在0040D3BA处设断
0040D3BA 68 CC104000 PUSH NOTEPAD.004010CC
0040D3BF C3 RETN
OllyMachine V0.16中的
invoke FindOpcode, eip, 0x00C3
好像不可以似的?
添加一个OM的CHM帮助文件,查找API是可以用Ctrl+F
附件:OM_Help.zip
|
能力值:
( LV13,RANK:370 )
|
-
-
160 楼
最初由 Aaah 发布 在OllyScript V0.92中可以 我可以用使用 findop eip, #00C3#命令 来查找并在0040D3BA处设断 0040D3BA 68 CC104000 PUSH NOTEPAD.004010CC ........
嗯,这种情况要用 invoke Search, eip, "00C3",试试看?
|
能力值:
( LV9,RANK:2130 )
|
-
-
161 楼
建议在om中加个kill SetUnhandledExceptionFilter:p
|
能力值:
( LV2,RANK:10 )
|
-
-
162 楼
最初由 luocong 发布
嗯,这种情况要用 invoke Search, eip, "00C3",试试看?
晕死
谢谢老罗
没有发现那个API,那么近:(
可是他也没有达到我的预期效果:(
他会断在两个指令之间
那样断点就没有生效
而OllyScript会断在之前的命令上
OM中如何作?
add reg00,1
试了好像不行?
|
能力值:
( LV13,RANK:370 )
|
-
-
163 楼
最初由 loveboom 发布 建议在om中加个kill SetUnhandledExceptionFilter:p
OK:p
|
能力值:
( LV13,RANK:370 )
|
-
-
164 楼
最初由 Aaah 发布
晕死 谢谢老罗 没有发现那个API,那么近:( 可是他也没有达到我的预期效果:( ........
invoke Search, eip, "00C3"
invoke GetPrevOpAddr, reg00, 1
invoke bp, reg00
|
能力值:
( LV2,RANK:10 )
|
-
-
165 楼
老罗,升级好快哦。:) :) :)
|
能力值:
( LV12,RANK:810 )
|
-
-
166 楼
最初由 luocong 发布 改了几个小时,重写了内嵌汇编模块,用fxyang的那个脚本测试了一下Armadillo 3.78的主程序,脚本狂跑了一段时间,最后停在了OpenMuteA处:
不知道正不正确?
应该是正确的,感谢!
|
能力值:
( LV2,RANK:10 )
|
-
-
167 楼
最初由 luocong 发布
invoke Search, eip, "00C3" invoke GetPrevOpAddr, reg00, 1 invoke bp, reg00
谢谢老罗
我还是好好看看帮助吧
|
能力值:
( LV13,RANK:370 )
|
-
-
168 楼
OllyMachine 0.17版发布。
地址: http://www.luocong.com/om
更新如下:
1. 修正:内嵌汇编功能,我重写了内嵌汇编的词法和语法分析器,修正了几个bug。(感谢fxyang)
2. 修正:以前的版本中,OllyMachine.ini会保留在OllyDbg的主目录下,现在修正为放在OllyMachine.dll的同一目录下。(感谢stephenteh)
3. 修正:对处理异常的同步错误。(感谢fxyang)
另外新增了monkeycz的两个对易语言的处理脚本到examples里面去。
|
能力值:
( LV12,RANK:810 )
|
-
-
169 楼
老罗看看,怎么内嵌汇编代码到了kernel32.dll中:
77EB6FE5 52 PUSH EDX
77EB6FE6 68 00000000 PUSH 0
77EB6FEB 68 00000000 PUSH 0
77EB6FF0 E8 2346FAFF CALL kernel32.CreateMutexA
77EB6FF5 61 POPAD
77EB6FF6 ^ E9 ECB2FAFF JMP kernel32.OpenMutexA
77EB6FFB ^ E9 E7B2FAFF JMP kernel32.OpenMutexA
没有运行成功
|
能力值:
( LV13,RANK:370 )
|
-
-
170 楼
最初由 fxyang 发布 老罗看看,怎么内嵌汇编代码到了kernel32.dll中: 77EB6FE5 52 PUSH EDX 77EB6FE6 68 00000000 PUSH 0 77EB6FEB 68 00000000 PUSH 0 77EB6FF0 E8 2346FAFF CALL kernel32.CreateMutexA ........
没错,这是我实现的方式,我把内嵌汇编写到了当前调试进程的代码最末尾,执行完之后再恢复原来的那些被覆盖的字节;而OllyScript则是用VirtualAllocEx()新开了一段内存。
关于你说的这个现象,可以先在OllyDbg的Debug菜单下按Pause,暂停OD,然后再按一下F8,让脚本的最后一句执行完毕,原来的字节就会被恢复的了。
|
能力值:
( LV2,RANK:10 )
|
-
-
171 楼
晕,老罗的网站我怎么打不开?
|
能力值:
( LV12,RANK:810 )
|
-
-
172 楼
现在的问题是pause后,按一次f8代码就变成了:
77EB6FE5 0000 ADD BYTE PTR DS:[EAX],AL
77EB6FE7 0000 ADD BYTE PTR DS:[EAX],AL
77EB6FE9 0000 ADD BYTE PTR DS:[EAX],AL
77EB6FEB 0000 ADD BYTE PTR DS:[EAX],AL
77EB6FED 0000 ADD BYTE PTR DS:[EAX],AL
77EB6FEF 0000 ADD BYTE PTR DS:[EAX],AL
77EB6FF1 0000 ADD BYTE PTR DS:[EAX],AL
77EB6FF3 0000 ADD BYTE PTR DS:[EAX],AL
77EB6FF5 0000 ADD BYTE PTR DS:[EAX],AL
77EB6FF7 0000 ADD BYTE PTR DS:[EAX],AL
77EB6FF9 0000 ADD BYTE PTR DS:[EAX],AL
77EB6FFB 0000 ADD BYTE PTR DS:[EAX],AL
77EB6FFD 0000 ADD BYTE PTR DS:[EAX],AL
77EB6FFF 00 ??? ; 命令交叉到内存块尾部
代码不见了:(
|
能力值:
( LV13,RANK:370 )
|
-
-
173 楼
最初由 fxyang 发布 现在的问题是pause后,按一次f8代码就变成了: 77EB6FE5 0000 ADD BYTE PTR DS:[EAX],AL 77EB6FE7 0000 ADD BYTE PTR DS:[EAX],AL 77EB6FE9 0000 ADD BYTE PTR DS:[EAX],AL 77EB6FEB 0000 ADD BYTE PTR DS:[EAX],AL ........
我刚才特意用OllyScript翻译了一次你的脚本,运行结果:
01B20000 60 PUSHAD 01B20001 52 PUSH EDX 01B20002 68 00000000 PUSH 0 01B20007 68 00000000 PUSH 0 01B2000C E8 2EEBCE7A CALL kernel32.CreateMutexA 01B20011 61 POPAD 01B20012 -E9 04ECCE7A JMP kernel32.OpenMutexA 01B20017 -E9 FFEBCE7A JMP kernel32.OpenMutexA
在OllyScript里面也是死循环了,停止不了。然后我是用OD的Debug菜单Pause下来的,结果就停在上面的这段地方了。注意它的地址:01B200000,这个地址很高/也可能会很低(根据当时的内存分配来决定),说明了OllyScript很可能每次遇到了内嵌汇编,都会重新申请一块新的内存来运行之,好浪费内存啊……而且会产生大量的内存碎片(因此我没有采用它这种做法)。
你可以试试用小键盘的“-”号返回几次看看能不能返回到正确的地方?由于我对破解不熟,只好麻烦你帮我一起找找bug了,谢谢。:)
|
能力值:
( LV13,RANK:370 )
|
-
-
174 楼
最初由 Phoenix 发布 晕,老罗的网站我怎么打不开?
那个破空间经常这样...
|
能力值:
( LV2,RANK:10 )
|
-
-
175 楼
晕。。。。。。
|
|
|