软件安全第二次实验

stud_PE软件

从这张图片中我们得到如下信息

从外部引入的函数

文件头

最重要的也就是这个说明可选头大小的字段了

节表

我觉得最重要的就是这两个了

其他的节表依次类推都可以了

.rdata节

这个节是最不想分析的。。。

  1. 这个节最重要的就是IDT, IDT的RVA可以通过可选头查到
  2. 看这个PE文件引用了几个外部的dll, n个dll就是 有(n+1)*20个字节大小
  3. IDT的每一项都是20个字节, 分成5个部分, 每一个部分都是4个字节, 第一个四个字节直接指向了INT, 最后一个四个字节直接指向了IAT。
  4. IDT的最后一项,也就是20个字节, 全部填0
  5. INT和IDT在文件中是一样的, 有几个dll, 就有几个项。
  6. INT和IDT的每一项都是8个字节,其中前四个字节指向hint, 后四个字节全部填0
  7. INT的第一项的四个字节的最高位如果是0, 代表用名字来引入函数, 如果是1, 代表用序 来引入函数
  8. IAT在内存中会被对应函数的地址取代, INT还是原来的

通过序 引入外部函数

首先明确一下PE文件是怎么引入外部的函数地

请看这张图

  1. 在文件中找到库的名字。装载相应的库

  2. 定位INT,

这时候可以看到是通过序 引入还是通过名字引入
如果是序 引入, 最高位是1, 十六进制表示是8, 这样就直接去库文件中找到相应的函数地址。

这里做了一个小实验, 本来文件是通过函数名引入的 但是如果我将高位修改为1, 这时候通过序 引入, 但是这个序 出错了。 所以 错如下

手动去找exitProcess的序 183, 十六进制就是

当然, 也可以用peview去找函数的序

那么如何在内存中去查看IAT中的内容呢p>

打造最小PE文件

修改最小对齐单位

可选文件头的目录项只需要引入函数节

节表也可以进行删除

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年2月22日
下一篇 2019年2月22日

相关推荐