分页: 1/1 第一页 1 最后页 [ 显示模式: 摘要 | 列表 ]

VB下的CONTEXT结构体
:夜晚 2008/08/20 .. by 风の雪
  由于CONTEXT结构体并不是固定的,是随着CPU的不一样而变化的,所以MSDN上也无法给出具体的定义。也因为MSDN上没有这个结构体的定义,当我们需要在VB下调用GetThreadContext/SetThreadContext等函数时,会因为没有CONTEXT结构而无法调用。

  所以今天我就抽出时间,参考了C++对这个结构体的定义,把它转成了VB的版本。

  在C++的WinNT.h中一共定义了三个版本的CONTEXT结构体,所以我也转换了三个不同的版本。

  只有x86的版本我是测试过的,其余两个都没经过测试,请慎用!

  如果另外两个测试过的朋友,请告知一声,谢谢!

  学过80x86汇编的朋友应该都知道,在寄存器中,有一个叫EIP的指针寄存器,该寄存器存储的是下一条指令的地址。而在实际使用中,也确实如此。因为我在编写c++代码时,调试的时候如果我打开寄存器窗口,可以发现EIP寄存器存储的就是下一条指令的地址。其设置下一条语句的功能,其实就是通过修改EIP寄存器实现的。

  因此,就有了我今天的这个想法。我不知道网络上有没别人想过这想法,我没去baidu或google验证,也不想去验证这问题。因为这是我自己想到的,包括代码的实现,都没有参考过任何人的代码。每个人有每个人的想法,或许有些人跟我的想法一样,但最终实现的方法可能不同。

  在我的代码里面,并没有实际地注射模块,只是简单地用MessageBox这个函数来演示了一下而已。既然能够调用MessageBox,那么注射模块也不是什么困难的问题了。只需要把要注射的模块名字写到远程进程中,然后用我的这个思路调用LoadLibrary函数就可以了。

  下面是我的代码:
< Tags: , , , >
分页: 1/1 第一页 1 最后页 [ 显示模式: 摘要 | 列表 ]