VC进程相关的学习(四)(API截获)

    0 PE文件(.exe)

       a 一开始是一段Dos程序,就是那个“必须运行在XXX环境”的警告头(IMAGE_DOS_SIGNATURE)。

       b 接着这个DOS头,首先是IMAGE_NT_HEADER,都是一些PE文件信息,在它的尾端是Data Directory数据表,能快速决定PE的段(section)地址。

       c 下来是IMAGE_SECTION_HEADER的列表,记录着每一个段的信息。

       d 再下来就是段数据,执行代码,数据资源那些东东了。
    这些东西会放在地址0x400000的地方,就是Histance的值,程序开始的位置。

    在这些段里,有一个".idata"段(输入数据段),该地方有着IAT,加载的DLL的API都在这里,大概像这个样子:
          JWP DWORD PTR [XXXXXXXXX]
          或者
          CALL DWORD PTR [XXXXXXXXX]
    这里面的XXXXXXXX,就是系统API所在的位置,所以我们要做的就是,把XXXXXXXX改成我们的函数地址,执行完我们的函数再杀回来就好了。

 

    导入地址表(IAT):Import Address Table 由于导入函数就是被程序调用但其执行代码又不在程序中的函数,这些函数的代码位于一个或者多个DLL 中.当PE文件被装入内存的时候,Windows装载器才将DLL装入,并将调用导入函数的指令和函数实际所处的地址联系起来(动态连接),这操作就需要导入表完成,其中导入地址表就指示函数实际地址。

1 程序指令内存空间的写入

   因为指令空间有Windows的保护,不能直接指针指过去修改,需要如下操作

     

2 查找DLL模块的IAT

     

3 查找IAT中的函数

     

4 使用范例

      

 

5 注意:通过IE测试发现,此种方法只能获取用Depneds看到在上面加载的DLL,而后来加载的,以及DLL加载的DLL都是无法获得的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值