第三种方法,条件断点使用什么条件可以防止时钟断下?
我再百度下...
如时钟事件的地址401000
条件就是 dword ptr ds: != 401000
这样就过虑掉了时钟事件 本帖最后由 拓海真一 于 2014-7-16 23:44 编辑
回答2:如果按钮事件断在时钟事件上,那么单步在头部 55 push ebp上使用 33 retn 即可将时钟事件去除
完整点:
0042868A|. /EB 09 jmp Xpengyou.00428695
0042868C|> |8B4D EC /mov ecx,
0042868F|. |83E9 01 |sub ecx,0x1
00428692|. |894D EC |mov ,ecx
00428695|> \837D EC 00 cmp ,0x0
00428699|.7C 12 |jl Xpengyou.004286AD
0042869B|.8B55 EC |mov edx,
0042869E|.8B45 08 |mov eax,
004286A1|.8B4C90 10 |mov ecx,dword ptr ds:
004286A5|.894D F0 |mov ,ecx
004286A8|.FF75 F0 |push
004286AB|.^ EB DF \jmp Xpengyou.0042868C
004286AD|>FF55 FC call
通常我们都是在 004286AD |> FF55 FC call 处下断点 如果是时钟事件,断下后 不操作任何按钮等, 他断下 就是时钟事件了,因为只有定时执行子程序的基本只有时钟了,此时断在call 断点 ,我们要F7单步步入,这时就已经处于断首,各种语言的断首是不同的,但是只有在步入的第一行写retn才会有效,易语言一般断首都是
00428640/$55 push ebp
00428641|.8BEC mov ebp,esp
在00428640 /$ 55 push ebp 处双击写入代码 retn 即可
如果有检测更改断首的话, 可在第二行写
pop ebp
retn
可保证堆栈平衡和过检测断首
根本去除时钟的方法 小菜无能,无法对已经开启的时钟去除, 只能给各位提供一个小方法: Ctrl+G 输入 SetTimer 然后在跳转到的地址写入 retn 0x10 这样可防止开启时钟,开启时钟的命令都会经过这个API,让他失效会让所有时钟都无效
如果要去除已经运行的时钟,只有注入代码使用APIKillTimer 来清除,除此之外小菜无能为力
原API代码
773B79FB >B8 18100000 mov eax,0x1018
773B7A00 B9 00000000 mov ecx,0x0
773B7A05 8D5424 04 lea edx,dword ptr ss:
773B7A09 64:FF15 C000000>call dword ptr fs:
773B7A10 83C4 04 add esp,0x4
773B7A13 C2 1000 retn 0x10
修改后的API代码
773B79FB >C2 1000 retn 0x10
773B79FE 90 nop
773B79FF 90 nop
773B7A00 B9 00000000 mov ecx,0x0
773B7A05 8D5424 04 lea edx,dword ptr ss:
773B7A09 64:FF15 C000000>call dword ptr fs:
773B7A10 83C4 04 add esp,0x4
773B7A13 C2 1000 retn 0x10
回答第二题,研究了一上午,还待别学了点易
应该没有跑题
一.创建时钟,在属性框中设置时钟周期:
1. alt+m 搜索控件名称(属性框中的名称, 如"时钟1")
2. 时钟内存数据(长度0x70):
00467B3BCA B1 D6 D3 31 00 00 00 00 00 00 20 00 00 00 10时钟1...... ...
00467B4B00 00 00 1A 00 00 00 1A 00 00 00 00 00 00 00 00... 32... 32........
00467B5B00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 00...............
00467B6B00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00...............
00467B7B00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00................
00467B8B00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00...............
00467B9B88 13 00 00 00 00 00 00 00 34 10 24 C1 00 00 00?.......4$?..
结构:
0x0: 时钟名称
0x8: 时钟控件位置Left
0xC: 时钟控件位置Top
0x10: 时钟控件宽度
0x14: 时钟控件高度
0x2F: 标记
标记 + 0x30: 时钟周期
3. 全nop掉,或在时钟周期的位置nop
二. 创建时钟,在代码中设置时钟周期:
1.格式
0040105E 6A 00 push 0x0
00401060 68 E8030000 push 0x3E8 // 时钟周期
00401065 6A FF push -0x1
00401067 6A 08 push 0x8
00401069 68 03000116 push 0x16010003
0040106E 68 01000152 push 0x52010001
00401073 E8 AA000000 call 11111.00401122
00401078 83C4 18 add esp,0x18
2.把push 0x3E8 改成 push 0便去掉了时钟周期
三. 用条件断点
1. 在按钮事件(时钟)断下后, 进入函数开头return;
2. 在FF55FC中设置条件断点,让时钟无法断下
问题3:
一、把StrongOD和OD Advanced设置一下,不行把反调试选项都勾上吧。不过貌似StrongOD里面一个Kill BadPE Bug勾上后有些程序不能正常运行,还有OD Advanced里面“采用灵活性质的断点”貌似有时也会有问题(试了好久终于发现了问题)。
二、自己断到反调试函数上NOP掉,最常见就是IsDebuggerPresent(我在调试垃圾公司的软件的时候用旧的OD都看到这个函数了都没NOP,当时真是脑子进水了),还有什么HeapFlags,ForceFlags,GetTickCount,ZwSetInformationThread 。貌似这些我都遇到过......
或者不用OllyICE了吧,(其实我也没用过其他的)。顺便看看还有什么好方法。(其实VMP总是检测到我的OD也是一个令我一直头疼到现在的问题。) 问题4:我用的OD是两个版本的结合,一个是黑鹰初级里面的"ODbyDYK", 另外一个是吾爱的OD。
ODbyDYK:
优点:有“标题隐藏插件”,可以逃过一些壳的标题检测;程序名为“Explorer.exe”,可以逃过一些壳的父进程名检测。
缺点:"OD隐藏插件"版本太老,现在躲不过新型壳的OD检测。
吾爱OD:
优点:有“StrongOD”和“OD Advanced”,可以躲过许多壳的检测。
缺点:“StrongOD”和“OD Advanced”在OD封包时的设置貌似不是很强大(而且我试到现在没有发现完美的设置,是我智商问题吗?),标题不能隐藏(碰到过程序检测标题是"吾爱破解"、"LCG"等的),OD名字不是Explorer.exe。
建议:
吾爱的OD可以加个标题隐藏插件,然后把OD程序名改成explorer.exe。也许会更加完善一些。 本帖最后由 lanmaososo 于 2014-7-25 14:32 编辑
问题5:当一个软件检测到了VM虚拟机,你有几种方法躲避检测?分别怎么操作?
答:虚拟机目录下的VMX
isolation.tools.getPtrLocation.disable = "TRUE"
isolation.tools.setPtrLocation.disable = "TRUE"
isolation.tools.setVersion.disable = "TRUE"
isolation.tools.getVersion.disable = "TRUE"
monitor_control.disable_directexec = "TRUE"
monitor_control.disable_chksimd = "TRUE"
monitor_control.disable_ntreloc = "TRUE"
monitor_control.disable_selfmod = "TRUE"
monitor_control.disable_reloc = "TRUE"
monitor_control.disable_btinout = "TRUE"
monitor_control.disable_btmemspace = "TRUE"
monitor_control.disable_btpriv = "TRUE"
monitor_control.disable_btseg = "TRUE"
页:
[1]
2