安全
跃然实验室
这个作者很懒,什么都没留下…
展开
-
堆 Vs 栈
1、应用场合(动态增长的数据结构/函数局部变量)2、申请方式(需要通过提供的函数申请,通过返回的指针进行管理/直接声明即可)3、释放方式(需要专用函数进行释放/函数返回时,由系统自动回收)4、增长方式(由低地址到高地址排列/相反)5、管理单元(堆块/字节) 出于性能的考虑,堆区的内存按不同大小组织成块,以堆块为单元进行标识,而不是如系...原创 2020-01-21 21:47:12 · 148 阅读 · 0 评论 -
栈工作原理
【工作过程】函数调用ØPUSH arg[]ØPUSH EIPØPUSH EBP1、参数入栈:将参数依次压入系统栈中;2、返回地址入栈:将当前代码区调用指令的下一条指令地址压入栈中,供函数返回时继续执行;ØEBP = ESPØESP = ESP - K3、保存当前栈帧的EBP入栈;4、将当前栈帧切换到新栈帧,ESP值装入EBP,更新栈帧底部;...原创 2020-01-21 21:46:04 · 1076 阅读 · 0 评论 -
010 Editor修改指令
回车直接修改原创 2020-01-20 23:11:27 · 3335 阅读 · 0 评论 -
Filemon
Filemon原创 2020-01-20 23:08:26 · 704 阅读 · 0 评论 -
010 editor 复制16进制段
复制时用ctrl +c在010中新建hex filectrl +shift +c原创 2020-01-20 23:07:27 · 7268 阅读 · 0 评论 -
UPX
UPX原创 2020-01-20 23:06:58 · 1434 阅读 · 0 评论 -
UltraEdit--定位到指定行
ctrl + g原创 2020-01-20 23:05:55 · 4278 阅读 · 0 评论 -
WinHex
利用WinHex查看内存信息利用ctrl+F查找字符串,注意一定要选择与程序对应的编码原创 2020-01-20 23:05:11 · 1038 阅读 · 0 评论 -
PE header
PE header 由三部分组成 字串 “PE\0\0”(Signature) 映像文件头(FileHeader)SizeOfImage字段(+50h)内存中整个PE映像尺寸按照“SectionAlignment”对齐的,它就是所有头和节的长度的总和 可选映像头(OptionalHeader)IMAGE_NT_HEADERS STRUC...原创 2019-06-12 18:57:43 · 963 阅读 · 0 评论 -
PE导入表
导入表的位置:在PE文件的PE文件头导入表通常位于 .idata 段导入函数(Import functions )就是被程序调用但其执行代码又不在程序中的函数函数的代码位于一个或者多个DLL中动态链接 ——当PE文件被装入内存的时候,Windows装载器才将DLL装入,并将调用导入函数的指令和函数实际所处的地址联系起来导...原创 2019-06-12 18:58:05 · 690 阅读 · 0 评论 -
PE导出表--查找入口地址
从序号查找入口地址(1)定位到PE文件头。(2)从PE文件头中的IMAGE_OPTIONAL_HEADER32结构中取出数据目录表,并从第一个数据目录中得到导出表的地址。(3)从导出表的nBase字段得到起始序号。(4)将需要查找的导出序号减去起始序号,就得到了函数在入口地址表中的索引。(5)检测索引值是否大于导出表的NumberOfFunctions字段的值,如果大于后...原创 2019-06-10 20:33:55 · 1196 阅读 · 0 评论 -
加载PE文件——内存映射文件
将程序安装内存对齐的方式读取到内存有两种方法:1、内存映射文件2、PE加载器模拟法1、内存映射文件 lpHeader所指内存是只读的,尽管是PAGE_READWRITE// LoadPeWithMap.cpp : Defines the entry point for the console application.//#include "stdafx.h"#...原创 2019-06-10 20:34:03 · 744 阅读 · 0 评论 -
PE操作类--判断PE文件
判断一个文件是否为合法PE文件通常只需判断“MZ”头和“PE”头//判断是否为PE结构BOOL CPe32 ::IsPeFile(TCHAR* pFileName){ if (pFileName == NULL) { return FALSE ; } ...原创 2019-06-10 20:34:09 · 1098 阅读 · 0 评论 -
PE文件操作类
1、分析类中需要存储的信息2、声明类3、类构造函数:传入PE文件完整路径,判断PE文件合法性,加载PE文件,为PE各部分结构体指针变量赋值。4、析构函数:释放内存5、赋值函数:为PE各结构体的指针赋值...原创 2019-06-10 20:34:16 · 225 阅读 · 0 评论 -
PE解析节表
//得到所有节的信息:节名,加载后地址,加载后大小,文件中地址,文件中大小void CPe32 ::GetSectionInfo(){ IMAGE_SECTION_HEADER * pPeSectionHeader = m_pPeSectionHeader; if (m_bSuccess) ...原创 2019-06-10 20:34:26 · 451 阅读 · 0 评论 -
加载PE文件——PE加载器模拟法
1、找到文件加载到内存的基址 通常为0x0040 00002、取得内存对齐粒度3、加载pe头,按照内存对齐粒度读取到指定起始地址的内存处4、加载各个节。得到节数目,定位节表,按照内存对齐粒度读取到内存,不足的用0填充。5、基址不对,需要重定位修复。// LoadPeWithRead.cpp : Defines the entry point...原创 2019-06-10 20:34:32 · 2346 阅读 · 0 评论 -
PE对齐粒度
按照内存对齐粒度读取到内存,不足的用0填充。文件对齐粒度200内存对齐粒度1000对齐后的大小//以dwAlignment 对齐dwOperateNum 值,也就是让dwOperateNum为dwAlignment的整数倍DWORD AlignmentNum(DWORD dwOperateNum, DWORD dwAlignment ){ ...原创 2019-06-10 20:34:38 · 1592 阅读 · 0 评论 -
Windows加载器加载PE文件
加载器读取一个PE文件的过程如下:1. 先读入PE文件的DOS头,PE头和Section头。2. 然后根据PE头里的ImageBase所定义的加载地址是否可用,如果已被其他模块占用,则重新分配一块空间。3. 根据Section头部的信息,把文件的各个Section映射到分配的空间,并根据各个Section定义的数据来修改所映射的页的属性。4. 如果文件被加载的地址不是Imag...原创 2019-06-11 15:13:18 · 1478 阅读 · 0 评论 -
PE重定位表
重定位表解决Pe文件实际加载基址与PE文件中所指定的加载基址不同时带来的问题。保存有待修正数据的地址EXE文件不存在重定位表:对于EXE文件来说,每个文件总是使用独立的虚拟地址空间,所以EXE总是能够按照这个地址装入,这意味着EXE 文件不再需要重定位信息。 DLL文件需要重定位表:对于DLL文件来说,由于多个DLL文件全部使用宿主EXE文件的地址空间,...原创 2019-06-11 15:13:12 · 380 阅读 · 0 评论 -
节表和节——PE文件到内存的映射
节表和节——PE文件到内存的映射.data :未初始化的数据Rsize:只存有用数据PE文件执行时 ,Windows装载器建立好虚拟地址和PE文件之间的映射关系Windows装载器在装载DOS部分、PE文件头部分和节表部分时不进行任何处理装载节的时候将根据节的属性做不同的处理内存页的属性节的偏移...原创 2019-06-11 15:13:04 · 889 阅读 · 0 评论 -
LordPE
不用管理员权限LordPE,是一款功能强大的PE文件分析、修改、脱壳软件。LordPE是查看PE格式文件信息的首选工具,并且可以修改相关信息。ImageBase 基地址,ImageSize 内存大小...原创 2019-06-08 22:21:15 · 3959 阅读 · 0 评论 -
Maltego
MaltegoMaltego是一款信息收集软件,可以从各种渠道收集目标的信息。自动化实现以一个点出发,在网络中收集相关的信息。然后以关系图的方式展示出来。深度挖掘数据,并且发现一些你懒得去搜索的内容。官网:www.paterva.com...原创 2019-07-13 22:31:26 · 1953 阅读 · 0 评论 -
字节与内存的关系
1个字节=2个16进制数内存地址是8位16进制表示,占4字节0042302000423030中间相差16个字节1位内存地址存1个字节原创 2019-06-11 15:12:21 · 4205 阅读 · 0 评论 -
OpenSSL编程
1、确保安装成功2、编程前在”项目添加附加目录“D:\Program Files\openssl\include\3、每个程序加入链接库#pragmacomment(lib,"libeay32.lib")#pragmacomment(lib,"ssleay32.lib")4、明确函数的具体定义例如://un...原创 2019-06-11 15:12:27 · 479 阅读 · 0 评论 -
OD单步跟踪
原创 2019-06-11 15:12:33 · 1033 阅读 · 0 评论 -
PE导入表-实例
目标:notepad 工具:LordPE目标:在文件中找到这个函数LordPE--计算RVA到Offset的值Import RVA:0000A048 Offset: 00009448FirstThunk RVA:0000A224 Offset: 00009624O...原创 2019-06-11 15:12:38 · 465 阅读 · 0 评论 -
PE导出表
PE文件被执行的时候,Windows装载器将文件装入内存并将导入表中登记的DLL文件一并装入根据DLL文件中的函数导出信息对被执行文件的IAT表进行修正这些包含导出函数的DLL文件中,导出信息被保存在导出表中通过导出表,DLL文件向系统提供导出函数的名称、序号和入口地址等信息Windows装载器通过这些信息来完成动态链接的过程获取导出表...原创 2019-06-11 15:12:46 · 169 阅读 · 0 评论 -
RVA和RAW(文件偏移)的转换
节表和节——RVA和文件偏移的转换RVA和文件偏移的转换的转换算法(1)循环扫描节表并得到每个节在内存中的起始RVA(根据VirtualAddress字段),并根据节的大小(SizeOfRawData字段)算出节的结束RVA,最后比较判断目标RVA是否落在某个节之内。(2)如果目标RVA处于某个节之内,那么用目标RVA减去节的起始RVA,这样就得到了目标RVA相对于节起始...原创 2019-06-11 15:12:52 · 3321 阅读 · 0 评论 -
PE解析导入表--实例
//得到导入表的信息:导入库名,导入函数ID,导入函数地址void CPe32 ::GetImportTableInfo(){ if (m_bSuccess) { //空结尾的导入表结构成员 I...原创 2019-06-11 15:12:59 · 440 阅读 · 0 评论 -
PE解析导出表--代码
//导出表信息typedef struct _EXPORT_INFO{ char cDllName[256]; //用于保存DLL库名 pFuncInfo pFunctionInfo; //指向FUNC_INFO结构体数组,用于保存若干个函数信息 long lFuncNum...原创 2019-06-10 20:34:43 · 476 阅读 · 0 评论 -
PE解析导出表
PE文件头文件——数据目录表导出目录位于数据目录表的起始位置指向的地址指向导入表1、函数名称字符串所在地址的RVA值2、导出函数名对应的导出序号3、导出序号对应的导出函数地址RVA值解析导出表步骤:1、找到导出目录,通过导出目录定位到导出表的文件偏移。2、查看导出表结构第七个成员(NumberOfFu...原创 2019-06-10 20:34:49 · 241 阅读 · 0 评论 -
PE汇编--导出函数名实际地址
mov esi, edi ; edi kernel32 baseAddress ,PE头位置add esi, [esi+3Ch] ; esi PE文件头,3Ch是DOS头最后一项mov esi, [esi+78h] ; esi 导出表相对地址地址赋给esi ...原创 2019-06-12 18:58:12 · 340 阅读 · 0 评论 -
ZeroAdd
ZeroAddPE文件加区段工具,免杀必备的加区加段的工具,为PE文件添加一个区段,方便你在其中写入自己的代码,适合反编译工作。原创 2019-06-12 18:59:42 · 661 阅读 · 0 评论 -
PETools--计算VA到RVA的值
PETools--计算VA到RVA的值原创 2019-06-08 22:23:46 · 808 阅读 · 1 评论 -
PETools
PETools 是另一款很好的PE文件编辑工具。PEditor 功能有转存进程、检测可执行文件加壳类型、在SoftICE中插入中断、编辑PE文件的导入表、节表、重建校验和、重建程序等,其自带了一个签名管理程序可自己添加更多的壳类型来让 PETools 识别。PETools 可支持插件,并带有插件编写示例,你也可以自己开发需要的插件。个人感觉 PETools 的 PE 编辑功能比较好,比较喜欢...原创 2019-06-08 22:23:10 · 2600 阅读 · 0 评论 -
Stud_PE
Stud_PE原创 2019-06-08 22:22:40 · 3178 阅读 · 2 评论 -
PEiD--查看导出函数
PEiD--查看导出函数原创 2019-06-08 22:22:10 · 732 阅读 · 0 评论 -
LordPE--计算RVA到Offset的值
计算RVA到Offset的值原创 2019-06-08 22:21:37 · 655 阅读 · 0 评论 -
IDA Pro常用基础操作(二)
1、IDA Pro下断点F2下断点F9运行变成红色或右键2、查看导入导出表3、打开调试器窗口4、视图窗口5、查看数据段的字符串在代码段中的引用位置函数可以利用交叉定位找到调用的地址.字符串无法找到,可能调用的地址经过变化6、CODE XREF外部参照代码7、每个函数最上方为函数的栈帧。8...原创 2019-06-08 15:36:50 · 1154 阅读 · 0 评论 -
IDA Pro切换图形或代码模式
1、空格2、右键选择TextView/GraphView切换图形模式代码模式原创 2019-06-08 15:36:13 · 5322 阅读 · 1 评论