首页
社区
课程
招聘
关于ollymachine的__asm
发表于: 2004-11-28 16:57 4753

关于ollymachine的__asm

2004-11-28 16:57
4753
好想点名的问呀,可惜规定了不能点,那就不点了。
想问一下__asm用什么技术方式实现的?
是不是编译后直接写到目标进程内,让目标进程运行它?
还是解释执行的??
而ollyscript又是用的什么方式?

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 1
支持
分享
最新回复 (6)
雪    币: 2199
活跃值: (1975)
能力值: ( LV12,RANK:810 )
在线值:
发帖
回帖
粉丝
2
老罗写的,自然可以点老罗的名:p
2004-11-28 17:11
0
雪    币: 1593
活跃值: (766)
能力值: ( LV13,RANK:370 )
在线值:
发帖
回帖
粉丝
3
我不清楚OllyScript是怎么做的,估计它是一行一行地进行运行时解释,所以速度可能不太快。

fxyang多次强调希望嵌入式汇编的执行速度要快,所以我就没有采用解释执行的方式,也正因为如此,似乎很难解决在嵌入式汇编里面使用OllyMachine的寄存器这个问题。

我的做法是首先对__asm{}块中的内容进行词法和语法分析,转换成OllyMachine可以识别的语句,再送到虚拟机里面。然后,在虚拟机里面编译成IA32 x86指令,再写入目标进程,然后改变目标进程的eip,指向我们的嵌入式汇编的第一条指令地址处,这样就实现了执行我们的嵌入式汇编指令的目的。最后,还要构造一个jmp指令,跳转回原来的eip处,否则程序的流程就变了。
2004-11-28 17:19
0
雪    币: 1593
活跃值: (766)
能力值: ( LV13,RANK:370 )
在线值:
发帖
回帖
粉丝
4
所以实际上就相当于做了一个转换,由于相应的词法分析和语法分析器还没有做得很好,所以目前肯定存在bug,不过再等几个版本应该就完善了。
2004-11-28 17:22
0
雪    币: 319
活跃值: (2404)
能力值: ( LV12,RANK:980 )
在线值:
发帖
回帖
粉丝
5
厉害!!!
2004-11-28 17:44
0
雪    币: 1593
活跃值: (766)
能力值: ( LV13,RANK:370 )
在线值:
发帖
回帖
粉丝
6
我刚才研究了一下OllyScript的内嵌汇编的实现原理,发现它好像是用VirtualAllocEx()分配了一块内存,然后剩下的工作就跟我的一模一样了。最大的弊端在于,它的内嵌汇编应该只能在NT内核下执行。刚开始我也是采用这种方法的,但是考虑到兼容性,后来决定不采用,OllyMachine的内嵌汇编理论上应该是支持9x平台的,但我没试过,不知有没有热心人愿意帮忙测试一下?
2004-11-29 14:56
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
7
其实有不少的保护壳脱壳脚本已经放弃9X系统了
2004-11-29 14:57
0
游客
登录 | 注册 方可回帖
返回
//