-
-
乱弹
-
发表于:
2005-10-22 20:14
9097
-
真得没事做了,灌灌水吧,随意说了。
OllyDbg 有个 bug (也许不能叫 bug),遇到异常会清掉 DRx,
如果壳用DRX值来解码就会出错。这就是为什么不能直接用 OllyDbg 跟完 hying's PE-Armor 而要中途保存 DRx的原因。
TLS 的 callback 可以在程序进入入口之前执行(甚至在import被装入之前?
)但听说9x下不会。Execryptor就用这个,习惯了open with ollydbg的还得改改,麻烦啊。
令X=[GetProcessHeap+0Ch] and 40h,非调试时应该为0。
SetUnhandledExceptionHandler 会用ZwQueryProcessInformation查询class=7(可能是11,我记不清了)的调试信息,只要hook 那个native api就行了。
ZwSetInformationThread可以把调试端口设置为0,调试器就收不到debug event了。
native api都是这种形式的:
mov eax, ServiceId
mov edx, xxxxxxxx
call [edx]
retn xx
2k下大同小异:
mov eax, ServiceId
lea edx, [esp+4]
int 2e
retn xx
hying新版会扫描所有代码直到retn(并且第一条指令不能为retn),就没法设置断点了,因为它还会复制代码,memory breakpoint也不好用。不过可以用这种形式:
mov eax, ServiceId
mov edx, PtrToMyPage ;指向自己的内存
call [edx]
retn xx
执行后就可以肆意妄为了,不怕检测。更狠得可以hook SSDT(服务描述表)。
有些程序利用调试器的 bug,我们可以自己写个调试器,只具有基本的功能,
来完成脱壳不受影响。
不知道我在说什么呢。现在流行VM啊,一个opcode table把debugger搞得团团转,设计VM是体力活,解VM更是体力活,可能reverse技术发展到一定程度脱壳真地如loveboom说的走不远了。
写代码和调试的时候要听音乐,否则人真的会疯掉。
易语言这东西有前途。
一个好壳除了AntiDebug不能太软,输入表和代码处理分支要足够多,200个以上为佳。
有时间应该写个好的polymorphic engine,把drx解码嵌进去。
。。。。。。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)