逆向工程笔记
originality2010
忍人所不忍,能人所不能!
展开
-
2008-03-07
可执行数据区:这一区域常常即包括预初始化数据也包括全局变量,预初始化数据指的是程序中的各种常量、硬编码信息,一些预初始化数据直接置于代码中,但 是,在数据量非常大的情况下,编译器会将这些数据存放在程序可执行部分中的某一个特殊区域,并生成通过地址引用这些数据的代码,另一种常见情况是,当程序 定义了全局变量时,数据就存放在可执行数据区,全局变量提供长时间的存储,对于预初始化数据,为了访问全局变量,编译原创 2008-03-08 14:08:00 · 324 阅读 · 0 评论 -
2008-03-05
在大多数逆向场合,第一步就是要确定应用程序的组件结构和每个组件的职责,之后就可以选一个感兴趣的组件专研其实现细节了模块:程序中最大的构造块称为模块,模块是二进制文件,他包含了程序可执行部分中的独立区域,模块有两种基本形式,静态库和动态库静态库:静态库由一组源代码文件构成,它们在一起生成实现程序中的某一特定功能的组件动态库:动态库和静态库非常相似,只是动态库不嵌入到程序中,而是保留在独立的文件中,即原创 2008-03-08 14:07:00 · 258 阅读 · 0 评论 -
2008-03-06
逆向c++程序和逆向c程序非常相似,只是必须将重点放在解读程序的类层次结构以及辨识类方法调用、构造函数调用,等等在逆 向的过程中,要尝试考察加载到每个寄存器中的数值特征,这一点很重要,考察什么情况下寄存器被允许指令访问指定的数值非常简单,因为寄存器只用于从内存到 指令或从指令到内存传送数据,在其他情况下,可能会看到同一个寄存器在单个函数中被重复使用和更新,这些都强烈暗示该寄存器被用于存储在一个源代原创 2008-03-08 14:07:00 · 331 阅读 · 0 评论 -
2008-03-04
逆向必须对操作系统有一定的认识。软件平台是指能够让程序在其上运行的所有程序或硬件设备。原创 2008-03-08 14:05:00 · 315 阅读 · 0 评论 -
2008-03-10
μops(Micro-Ops):IA-32处理器用微码来实现处理器支持的所有指令。微码本质上就是处理器内部的另一个程序设计层,这就是说处理器本省 包含一个更加初级的核,它只能执行比较简单的操作,为了实现相对比较复杂的IA-32指令,处理器有一个微码ROM,该ROM包含了指令集中每条指令的微 码序列管线(Pipelines):基本上,CPU的管线就像工厂的装配线,负责解码和执行程序指令,一条指令进入原创 2008-03-12 01:42:00 · 387 阅读 · 0 评论 -
2008-03-09
代码生成器见最重要的三个阶段:1.指令选择:代码从中间表示翻译成为平台专用指令的阶段,每个单独指令的选择对整个程序的性能来说都非常重要,指令的选择需要编译器对每个指令的性能都了如指掌2.寄存器分配3.指令调度:代码生成器采用平台专用的指令调度算法来重新组织指令的顺序,以获得可能的最大程度的并行,重新组织的结果就是交叉带啊,其中分别处理两个独立事情的两个指令序列交织在一起形成指令序列,其原因是因为大原创 2008-03-12 01:40:00 · 342 阅读 · 0 评论 -
2008-03-11
分页:指将目前不用的内存区域临时转存到硬盘中的过程,当一些应用程序目前不用时,虚拟内存架构就会让系统转存这一部分到一个文件中,再次使用的时候装入 内存,而不是将整个应用程序保留在物理内存中,并将它们的页表置为无效,这样在物理内存中,这些页上的内同就可以丢弃而相应的空间就可以用作其他用途分 页设计的最大负面效果:应用程序实际使用的内存比可用的物理内存多,因为一旦物理内存不够用系统就会把硬盘作为二级存原创 2008-03-12 01:42:00 · 373 阅读 · 0 评论