-
-
[原创]猜测一下ArmInLine对CC处理的方式,各位大侠来点评一下
-
发表于:
2006-8-29 13:41
4499
-
[原创]猜测一下ArmInLine对CC处理的方式,各位大侠来点评一下
正如某位兄弟所说Armadillo的其他几个保护方式并不难绕过,最为复杂的其实就是CC这个部分。
有一款软件名曰 ArmInLine 可以完美的解决 远代码及其IAT乱序,但是对CC的处理还欠缺智能上的考虑。
通过使用ArmInLine发现,ArmInLine在自动定位CC的时候要求选着原始的被加壳的程序,然后自己模拟成为这个程序的主进程,启动子进程,这时因为ArmInLine对它启动的子进程设置了调试权限,所以他可以接收子进程的调试事件通知,也就是 大名鼎鼎的 WaitForDebugEvent 函数,在得到调试事件后,把CC的整理出来,然后自己模拟处理,最后会通告你找到多少个CC,多少个已经修复。
这里也许存在一个问题,就是在他接收调试事件时,并没有排除那些不是壳加入的CC,一古老的全部罗列出来,然后按它的理解来修复,当然,这里就完全可能出现误修复的情况,所以导致很多程序修复出来不能使用,或者丧失功能。而且在程序各功能没有完全运做的情况下,这个找出来的CC,不一定是全部的,有可能在未执行到的代码中仍然有CC的存在。
这仅仅是我的一个猜测,希望各位大侠点评下,不知道我的猜测是否正确。
BTW:最近研究了对付CC的一个又土又笨的办法,似乎还有点效果。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)