自己编写的DLL 的导入
这个首先你要把DLL 加载到程序进程空间中去
你用 0D的话,要修改段的内容
你要完成的功能是 第一找到位置存放你的shellcode shellcode是机器指令 这个要重定位的
用jmp指令进行跳转,不用CALL shellcode里面要包含一个jmp回来的指令
这个OD直接调试程序 我木有试过 ,但是机理来说就是 修改指令指针
为什么要重定位,是因为程序在编译过程中就已经确定了各个段和代码的位置了 用的是rav偏移量的概念
这个重定位技术怎么做的
用call指令 比如
call start
start:
pop ebx
这个里面包含的内容是
首先完成的是 EIP的入栈 如果这个时候来句 sub ebx offset start可以求出一个差值 就是跳转后的指令位置和当前指令的距离
你要跳回来 就得跳转点称为p2 call执行后的指令地址值称为P3 那么就有 p3=p2+ebx 来定位这个指令位置
如果你的程序还要使用变量的话 那么你还得修改栈里面的内容
[
本帖最后由 zhu224039 于 2012-12-10 08:54 编辑 ]