
reverse 的入门
世俗非议不足道哉~
这个作者很懒,什么都没留下…
展开
-
filebuffer->imagebuffer
问题描述映像关系#include "stdafx.h"#include "string.h"#include <malloc.h>#include <windows.h>// exe->filebuffer 返回值为计算所得文件大小int ReadPEFile(char* file_path,PVOID* pFileBuffer){ FILE* pfile = NULL; // 文件指针 DWORD file_size = 0; LPVOI原创 2020-08-09 15:26:43 · 908 阅读 · 0 评论 -
节表
一、PE加载的过程1、根据SizeOfImage的大小,开辟一块缓冲区(ImageBuffer).2、根据SizeOfHeader的大小,将头信息从FileBuffer拷贝到ImageBuffer3、根据节表中的信息循环讲FileBuffer中的节拷贝到ImageBuffer中.Q1、如何定位节表可选PE头后面紧跟着的就是第一个节表.Q2、如何确定节表个数标准PE头里面的第二个成员:NumberOfSection 存储的就是一个有几个节表二、结构三、编写程序打印节表中的信息.#i原创 2020-08-09 14:48:18 · 443 阅读 · 0 评论 -
PE头字段说明
PE头字段说明一、 PE格式结构图二、PE各字段说明三、对应关系一、 PE格式结构图建议放大看二、PE各字段说明未注释的代表是重点1、DOC头: WORD e_magic * "MZ标记" 用于判断是否为可执行文件. DWORD e_lfanew; * PE头相对于文件的偏移,用于定位PE文件 2、标准PE头: WORD Machi原创 2020-08-09 14:26:46 · 453 阅读 · 1 评论 -
PE_02-----PE头解析
PE头解析一、 PE头概述磁盘文件与内存 的映射关系PE为什么要分节?DOC头标准PE头可选PE头二、PE格式结构图(详细)三、打印PE头部信息运行结果一、 PE头概述磁盘文件与内存 的映射关系PE为什么要分节?1、节省硬盘空间.(这个不是决定的,由编译器决定)2、一个应用程序多开3、理解FileBuffer和ImageBufferDOC头标准PE头可选PE头二、PE格式结构图(详细)注:区块就是节表三、打印PE头部信息打印PE头部信息:PE头包含:DOS头+4字原创 2020-08-09 14:07:11 · 709 阅读 · 0 评论 -
PE准备阶段--------.exe文件的读取
.exe文件的读取练习题一、winhex的使用练习题二、将记事本的.exe文件读取到内存,并返回读取后在内存中的地址.练习题三、将内存中的数据存储到一个文件中,(.exe格式),然后双击打开,看是否能够使用练习题一、winhex的使用打开wps.exe文件打开RAM中运行的.exe文件其他略练习题二、将记事本的.exe文件读取到内存,并返回读取后在内存中的地址.直接上代码吧#include "stdafx.h"#include <malloc.h>int file_原创 2020-08-09 12:29:30 · 1091 阅读 · 0 评论 -
指针的反汇编
指针的反汇编一、指针的基本性质123二、&与*三、常量区问题四 结构体指针五 数组指针六 函数指针隐藏代码到数据区:在一/二级指针的状态下,“指针是地址”概念是适用的。但在更高级别的状态下,这一概念就不再适用了一、指针的基本性质1带类型的变量赋值时只能使用“完整写法”. 带类型的变量宽度永远是4字节、无论类型是什么,无论有几个*.21、不带*类型的变量,++或者-- 都是假1 或者减12、带*类型的变量,可是进行++ 或者 --的操作3、带类型的变量,++ 或原创 2020-08-03 00:45:12 · 616 阅读 · 0 评论 -
switch语句反汇编
switch语句反汇编一、switch语句1、在正向编码时,switch语句可以看做是if语句的简写2、break在switch语句中十分重要二、switch语句的反汇编1、当switch存在3个分支时2、当switch存在4个分支及以上且连续时3、当switch存在多个分支,常量连续性相对不高时补充:当case后的常量差距较大时一、switch语句1、在正向编码时,switch语句可以看做是if语句的简写2、break在switch语句中十分重要举一个缺少break的反例(程序在switch语句原创 2020-07-26 22:43:49 · 877 阅读 · 0 评论 -
结构体及数据宽度的问题
C语言结构体的反汇编分析一、结构体变量1、全局结构体变量的反汇编2、局部结构体变量的反汇编3、结论二、结构体对齐1、结构体的大小变化1.1代码及结果1.2为什么要有数据对齐?2、对齐参数3、对其原则一、结构体变量1、全局结构体变量的反汇编主要C语言代码如下Function的反汇编代码如下:从上图可以看出,全局变量的结构体分配内存时,赋值连续但不等宽2、局部结构体变量的反汇编C语言代码反汇编代码从上图可以看出,局部结构体变量与普通变量赋值方式一致3、结论做全局变量时,结构体各元素原创 2020-07-26 21:49:33 · 442 阅读 · 1 评论 -
缓存区溢出漏洞原理的简单演示
缓存区漏洞原理C语言代码输出结果反汇编代码缓存区溢出攻击补充通过往程序的缓冲区写超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,使程序转而执行其它指令,以达到攻击的目的。造成缓冲区溢出的原因是程序中没有仔细检查用户输入的参数。C语言代码void HW(){ printf("Hello World"); getchar();}void Fun(){ int arr[5] = {1,2,3,4,5}; arr[6] = (int)HW;}int main原创 2020-07-26 21:02:15 · 415 阅读 · 0 评论 -
C语言循环判断语句的反汇编分析
C语言循环判断语句的反汇编分析一、IF判断语句1、简单if语句1.1函数调用处代码1.2函数调用处代码2、if...else...语句二、循环语句的语法1、do..while语句2、while语句3、for语句一、IF判断语句1、简单if语句if(a>b)if(a<b)1.1函数调用处代码1.2函数调用处代码2、if…else…语句直接上代码吧多层if else结构二、循环语句的语法1、do…while语句2、while语句3、for语句...原创 2020-07-26 20:36:37 · 349 阅读 · 0 评论 -
裸函数及常见的几种函数调用约定
一、什么是裸函数void __declspec(naked) Function(){__asm { ret }}编译器不对裸函数做任何操作,所以要自己写汇编代码裸函数不能在mian()函数中使用1、无参数无返回值的函数框架2、有参数有返回值的函数框架3、带局部变量的函数框架rep指令的目的是重复其上面的指令.ECX的值是重复的次数.STOS指令的作用是将eax中的值拷贝到ES:EDI指向的地址.二、常见的几种函数调用约定1、 __c原创 2020-07-26 19:59:35 · 742 阅读 · 0 评论 -
常用汇编指令及堆栈图
常用汇编指令及堆栈图第一部分、汇编指令一、常用汇编指令1通用数据传送指令.2. 输入输出端口传送指令.3. 目的地址传送指令.4. 标志传送指令.二、EFLAGS寄存器三、JCC第二部分 堆栈图一、一个简单C语言程序的堆栈图二、汇编中的函数1、汇编中的函数2、函数的入口3、函数的出口三、Windows堆栈1、Windows堆栈的特点:2、什么是堆栈平衡:第一部分、汇编指令一、常用汇编指令1通用数据传送指令.MOV 传送字或字节. MOVSX 先符号扩展,再传送. MOVZX原创 2020-07-26 19:00:00 · 2021 阅读 · 1 评论 -
OD的简单使用以及一个小程序的破解
OD的简单使用一、下载二、窗口三、调试打开方式调试中我们经常要用到的快捷键有这些:附:破解(绕过)一个CRACKME.EXE1、分析程序2、使用OD打开3、寻找 MessageBoxA()函数在何处被调用找到了 MessageBoxA()函数在何处被调用,如下图所示分析反汇编程序接下来是重点操作(思路)成功!!!!!另一种方法:直接修改程序汇编代码从这这篇博客开始开一个新坑:reverse 的入门OD(OllyDbg)和IDA Pro这两款工具分别是调试逆向的两款重要工具。虽然两者都兼容动态和静态的调试原创 2020-07-26 17:41:27 · 2714 阅读 · 1 评论