原创空间
分页: 1/4 第一页 1 2 3 4 下页 最后页 [ 显示模式: 摘要 | 列表 ]

制作PCF字体
:夜晚 2008/11/05 .. by 风の雪
  要制作PCF字体,我们可以通过TTC字体进行转换。转换过程为:TTC->BDF->PCF。

  首先我们要找一个TTC转BDF的工具。

  XFontGenerator听说可以转,但现在好像绝迹了,反正我找不到。找到一个linux下的fontforge源码包,可惜这东西我不会用,懒得去看源码。后来找到了一个工具,叫otf2bdf,它可以把TTC、OTF字体转换成BDF。

  先到http://www.math.nmsu.edu/~mleisher/Software/otf2bdf/下载otf2bdf。

  建议下载win32版本的。linux版本的我不知道怎么用,我还是个linux白菜,只是最近在玩linux而已。注意要下那个编译好后的包,别下那个源码包。反正我们也只是利用工具而已,不需要自己编译。binaries标题下面的就是。win32 3.1版下载地址如下:
< Tags: , , >

  这个是创建子进程模块注射的VB版演示,本次演示进行了实际性的DLL注射。

  TestDll_Thread.dll是我用ASM写的一个测试用DLL。

  当它被加载到进程后,会自动启动一个线程,该线程每5秒自动弹出一个对话框。

  只要创建的进程能正常启动,就表示代码没问题。

  至于DLL是否注射成功,与所指定的DLL有关,还有与杀软的截拦有关。

  只要保证我所提供的测试DLL在工程目录下,一般都会成功的。

  下面给出来的代码中,不包含CONTEXT结构体的定义,请自行到《VB下的CONTEXT结构体》下载,或直接下载后面的工程文件。
< Tags: , , , , >

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: , , , >

  在之前的日志中,我提到过,我发现每个API的代码之间,都有5个字接的空白。所以,我忽然想到,我可以利用这5个字节进行新的API Hook,进而实现API被Hook以后还能执行原来的指令。

  其实,我觉得很多时候Hook一个API后,我们就没有必要去执行原来的代码了,因为我们要用新的过程来取代原来的API。可是,有的时候我们需要的仅仅是监视一下这个API的执行,或者只修改一下它的返回值而已,不希望它的过程被覆盖掉。这样,就产生了我这样的一个想法。

  这个方法,原理就是在API过程的最后,函数返回之前,跳转到我构造的指令中。在我的指令里,先保存了一下API的返回值,以便我们可以自己选择返回API原来的值或者自己定制的值。然后把传递进来的参数重新压栈,接着再用call指令调用我们自己的过程,然后返回。

  只是这个方法,有一个缺点,就是每个API的后面必须要有5字节的空白和只有一处返回指令。
< Tags: , >
分页: 1/4 第一页 1 2 3 4 下页 最后页 [ 显示模式: 摘要 | 列表 ]