资源表:PE中的相关资源可以通过程序进行深度定位,所获取的二进制字节码与资源脚本语句之间是一一对应的。这些数据可能是源代码内部需要用到的常景,比如 菜单选项、界面描述等;也可能是源代码外部的,比如程序的图标文件、背景音乐文件、配置 文件等,以上这些数据统称为资源。常见的资源程序中常用的六类资源包括: 1、位图资源 2、光标资源 3、图标资源 4、菜单资源 5、对话框资源 6、自定义资源结构体:IM
基址重定位:当向程序的虚拟内存加载PE文件时,文件会被加载到ImageBase所指向的地址。对EXE文件来说,EXE文件会首先加载到内存,每个文件总是使用独立的虚拟地址空间,这就意味着EXE文件不用考虑基址重定位问题;对于DLL文件来说,多个DLL文件使用调用其本身的EXE文件的地址空间,不能保证ImageBase所指向的地址没有被其他DLL文件占用,所以DLL文件当中必须包含重定位信息,也就是说
输入表输入函数,表示被程序调用但是它的代码不在程序代码中的,而在dll中的函数。对于这些函数,磁盘上的可执行文件只是保留相关的函数信息,如函数名,dll文件名等。在程序运行前,程序是没有保存这些函数在内存中的地址。当程序运行起来时,windows加载器会把相关的dll装入内存,并且将输入函数的指令与函数真在内存中正的地址联系起来。输入表(导入表)就是用来保存这些函数的信息的。 结构体typedef
区块特点:1、内存页的属性2、节的偏移地址3、节的尺寸4、不进行映射的节节事实上就是相同属性数据的组合。文件与内存映射的关系公式为RVA是相对虚拟地址(RelativeVirtualAddress)的缩写。RVA是当PE文件被装载到内存中后,某个数据位置相对于文件头的偏移量。参考文章:https://javajgs.com/archives/44114在实际情况下,我们常常会遇到将代码段中访问的R
节表:PE⽂件中所有节的属性都被定义在节表中,节表由⼀系列的IMAGE_SECTION_HEADER结构排列⽽成,每个结构⽤来描述⼀个节,结构的排列顺序和它们描述的节在⽂件中的排列顺序是⼀致的。全部有效结构的最后以⼀个空的IMAGE_SECTION_HEADER结构作为结束,所 以节表中总的IMAGE_SECTION_HEADER结构数量等于节的数量加⼀。节表总是被存放在紧接在PE⽂件头的地⽅。
前一节我们详解了DOS头部,dos头部只有一个字段指向PE头部结构el_fanew字段找到PE头部PE头部结构我们先来看下PE头部的三个结构体typedef struct _IMAGE_NT_HEADERS { DWORD Signature; //PE文件头标志 => 4字节
逆向常用的调试工具OllyDbg,界面简单,使用起来也简单。学习中,主要通过对160个CrackME小程序进行调试,从而了解程序设计的思想。基础条件1、基础的汇编指令2、基础的计算机术语3、使用一款Ring3级别的调试工具(ring0给操作系统使用,驱动加载之后运行在ring0,就是所谓的“rootkit”)4、了解一般程序设计的流程建议:如果是初学者,不建议直接上手IDA,F5分析。学习逆向调试
OllyDbg简介:OllyDbg是一种具有可视化界面的32位汇编分析调试器,是一个新的动态追踪工具,将IDA与SoftICE结合起来的思想,Ring3级调试器,非常容易上手,己代替SoftICE成为当今最为流行的调试解密工具了。同时还支持插件扩展功能,是目前最强大的调试工具。为什么使用OllyDbg? 我们不会去探讨SoftICE和OllyDbg之间的对抗,我认为即使是SoftICE的狂热追随者
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号