能力值:
( LV12,RANK:810 )
|
-
-
2 楼
老罗写的,自然可以点老罗的名:p
|
能力值:
( LV13,RANK:370 )
|
-
-
3 楼
我不清楚OllyScript是怎么做的,估计它是一行一行地进行运行时解释,所以速度可能不太快。
fxyang多次强调希望嵌入式汇编的执行速度要快,所以我就没有采用解释执行的方式,也正因为如此,似乎很难解决在嵌入式汇编里面使用OllyMachine的寄存器这个问题。
我的做法是首先对__asm{}块中的内容进行词法和语法分析,转换成OllyMachine可以识别的语句,再送到虚拟机里面。然后,在虚拟机里面编译成IA32 x86指令,再写入目标进程,然后改变目标进程的eip,指向我们的嵌入式汇编的第一条指令地址处,这样就实现了执行我们的嵌入式汇编指令的目的。最后,还要构造一个jmp指令,跳转回原来的eip处,否则程序的流程就变了。
|
能力值:
( LV13,RANK:370 )
|
-
-
4 楼
所以实际上就相当于做了一个转换,由于相应的词法分析和语法分析器还没有做得很好,所以目前肯定存在bug,不过再等几个版本应该就完善了。
|
能力值:
( LV12,RANK:980 )
|
-
-
5 楼
厉害!!!
|
能力值:
( LV13,RANK:370 )
|
-
-
6 楼
我刚才研究了一下OllyScript的内嵌汇编的实现原理,发现它好像是用VirtualAllocEx()分配了一块内存,然后剩下的工作就跟我的一模一样了。最大的弊端在于,它的内嵌汇编应该只能在NT内核下执行。刚开始我也是采用这种方法的,但是考虑到兼容性,后来决定不采用,OllyMachine的内嵌汇编理论上应该是支持9x平台的,但我没试过,不知有没有热心人愿意帮忙测试一下?
|
能力值:
( LV9,RANK:3410 )
|
-
-
7 楼
其实有不少的保护壳脱壳脚本已经放弃9X系统了
|
|
|