能力值:
( LV12,RANK:300 )
|
-
-
2 楼
调试器修改被调试程序的线程上下文才会用GetThreadContext和SetThreadContext,程序线程自己修改自己的线程上下文只需要使用结构化异常处理(SEH)就可以了。从楼主的描述看,很可能是壳中采用了SEH来anti-debug,这是加密壳采用的典型的anti-debug方式,楼主应该学习一下这方面的知识。
|
能力值:
( LV3,RANK:20 )
|
-
-
3 楼
我只问个简单的问题,如何不用SetThreadContext来修改dr0-dr7的寄存器,直接mov dr0,eax会报异常,似乎只能在ring0里面改……
不过已经能在OEP处断下了,也可以将程序dump出来,要补的区段也通过Hook VirtualAllocEx得到了。不过securom真是变态,一堆cpuid做加密种子,被加密的这些代码要在以后运行过程中才被解密出来,而加密着的代码每次都不一样,写了一个Loader把这些段加载上去也运行不了。翻了翻了老帖,才知道它用了当前进程ID做加密种子,下断GetCurrentProcessId发现确实如此。
只能再试试看了,不过这壳太硬,我这样的菜鸟估计脱不了了……
|
能力值:
(RANK:260 )
|
-
-
4 楼
不用GetThreadContext获取Context:发生异常时,系统会将Context结构传给在SEH链中注册的HANDLER。
不用SetThreadContext设置Context:当异常处理结束时,系统调用NtContinue()可以重新装载线程的Context.
|
能力值:
( LV3,RANK:20 )
|
-
-
5 楼
原来是修改异常处理程序传递进来的Context参数就可以修改drx了,谢谢。
|
能力值:
( LV12,RANK:420 )
|
-
-
6 楼
用内核调试器就可以修改DRX了
|
能力值:
( LV9,RANK:180 )
|
-
-
7 楼
LZ喜欢倒着来?
|
能力值:
( LV9,RANK:250 )
|
-
-
8 楼
SEH吧
勇于调戏SR的都是高手..
|
|
|