
反汇编
l0g1n
这个作者很懒,什么都没留下…
展开
-
C++反汇编笔记2
1、常量数据地址减去基地址就是它的文件中的偏移地址。 2、#define是一个真常量,而const却是由编译器判断实现的常量,是一个假常量。使用const定义的变量,最终还是一个变量,只是在 编译器内进行了检查,发现有修改则报错。 3、#define与const的区别:#define编译期间查找替换,由系统判断是否被修改,字符串定义在文件只读数据区,数据常量编译为立即数寻址方式,成为二进制代码原创 2012-06-05 22:18:51 · 1642 阅读 · 0 评论 -
C++反汇编笔记1
1、无符号整数所有位都是用来表示数值,没有符号位;有符号整数最高位为符号位,如何判断一段数据是有符号类型还是无符号类型,取决于要查看的指令或者已知的函数如何操作此内存。 2、浮点数类型优点计算效率高,缺点存储不灵活。 3、浮点数操作是通过浮点寄存器来实现的,浮点寄存器是通过栈来实现的,由ST(0)~ST(7)组成。 4、字符串有两种方法确实结束地址:保存总长度、结束符’\0'。 5、指针和原创 2012-06-05 08:09:28 · 2090 阅读 · 1 评论 -
PE中节&对齐
PE中的节是存放不同类型数据(代码、数据、常量、资源)的地方,不同的节具有不同的访问权限。 节是PE文件中存放代码或数据的基本单元。有些数据类型不同,分别属于不同的数据目录,但由于其访问属性相同,便被归类到同一个节中,节可能会占用一个或多个页面,页面的属性包括只读、只写、读写等。 PE中的对齐有三类: 数据在内存中对齐 Windows操作系统对内存属性的设置以页为单位,原创 2012-12-02 22:22:34 · 1583 阅读 · 0 评论 -
PE中涉及的地址
PE中涉及的地址有四类: 虚拟内存地址(VA) 用户的PE文件被操作系统加载进内存后,PE对应的进程支配了自己独立的4GB虚拟空间,范围00000000h--0fffffffh。进程本身的VA被解释为:进程的基地址+相对虚拟内存地址。 相对虚拟内存地址(RVA) 进程被加载进虚拟内存后,相关的动态链接库也会被加载,这些文件称为模块。模块都有基地址,不同模块的基地址一般不同。相对虚拟内存原创 2012-12-02 21:42:57 · 981 阅读 · 0 评论 -
内存映射文件&PE内存映像
内存映射文件是指将硬盘上的文件不做修改的装载到内存中,(为什么?)在硬盘上,文件是被分割开存放的,当我们访问时,计算机需要先将不同位置的内容读取到内存,而有了内存文件映射,访问就会变得更轻松和快捷,由于读取磁盘操作放到了一起,读写效率会提高很多,所以许多大型的编辑软件经常会使用内存映射文件存取磁盘文件。 PE内存映像是指按照一定的规则装载到内存中,装入后的整个文件头内容不会发生变化,但PE文件的原创 2012-12-01 21:38:08 · 2554 阅读 · 0 评论 -
一个CrackMe核心代码的不完整分析
第一次对反汇编代码做深入阅读,学到了很多东西,但还没成系统。 00401BD0 /$ 55 push ebp 00401BD1 |. 8BEC mov ebp, esp 00401BD3 |. 81EC 14040000 sub esp, 414 00401BD9 |. 56 push es原创 2012-12-04 09:47:02 · 906 阅读 · 0 评论 -
一段ShellCode
//此ShellCode为0day安全:软件漏洞与分析技术书中的。只是对流程进行了梳理,添加了注释。 //注释中实际内存地址,就是虚拟地址。 #include #include int main() { _asm { CLD push 0x1e380a6a ;MessageBoxA push 0x4fd18963 ;ExitProcess push 0x0c9174原创 2013-10-12 23:55:55 · 1251 阅读 · 0 评论