PE文件结构学习
资料来源:《逆向工程核心原理》和PE文件结构格式详解(完整版)【逆向编程】 (youtube.com) 一、PE文件基础1.可执行文件Windows:PE Linux: elf 2.PE文件特征PE文件指纹 3.PE结构 DOS头 DOS MZ头 IMAGE_DOS_HEADER(64字节) e_magic:4D5A是DOS签名,不可改 e_lfanew:78指向PE头开始位置,要改要一起改。 上面两个是PE指纹,操作系统用来识别是否是PE文件,其他地方可以随便改,因为IMAGE_DOS_HEADER是给16位平台看的,而我们现在的环境大部分是32位或者64位。 MS_DOS Stu,DOS存根,用来给链接器插入数据,随便改 NT头 IMAGE_NT_HEADERS12345typedef struct _IMAGE_NT_HEADERS { DWORD Signature; ``// PE标识 IMAGE_FILE_HEADER FileHeader; ``// 标准PE头 IMAGE_OPTIONAL_HEADER32 OptionalHeader;...
NSSCTF
NSSCTFeasyRE(虚函数表+反调试+内联函数)[SWPU 2019]easyRE | NSSCTF 没做出来,看了佬的wp才理清思路[原创] SWPUCTF 2019 easyRE-CTF对抗-看雪-安全社区|安全招聘|kanxue.com 分析main1234567891011121314151617181920212223int __cdecl main(int argc, const char **argv, const char **envp){ _DWORD v4[30]; // [esp-6Ch] [ebp-F8h] BYREF int v5; // [esp+Ch] [ebp-80h] _DWORD v6[27]; // [esp+10h] [ebp-7Ch] BYREF int v7; // [esp+88h] [ebp-4h] if ( sub_40EF90() ) return 1; // 反调试 sub_4026C0(0x6Cu); ...
IDApython学习
IDApython&IDCIDApython 官方文档:IDAPython | Hex-Rays Docs IDC 官方文档:IDC | Hex-Rays Docs 常用模块1.IDC与 IDA 命令行进行交互的模块,提供了很多 IDA 中指令相关的函数。 idc.get_name(ea):获取地址 ea 处的名称。 idc.get_func_name(ea):获取函数地址处的函数名称。 idc.set_name(ea, name):为地址 ea 设置一个新的名称。 idc.add_entry(ea, name, start, end):在 ea 处添加一个入口点。 idc.get_func(ea):获取 ea 处的函数结构。 2.IDAAPI与 IDA 的核心 API 交互的主要模块。包括了对 IDA 核心对象的访问,涵盖了地址、函数、节等许多底层操作。 idaapi.get_func(ea):返回地址 ea 处的函数对象。 idaapi.get_flags(ea):返回地址 ea...
初识TCP
TCP一、TCP特点 面向连接的协议,在传输数据前需要建立一条可靠连接 流式协议,TCP将数据看作字节流。传输过程中数据是可以被分割为多个数据包在接收端重新组装的。 TCP通过校验和\序列号和确认应答来确保数据的可靠传输,出错回重新传输。 服务器被动连接,客户端主动连接。 二、TCP编程server端1.创建套接字socket()123456789101112131415161718192021#include <sys/types.h>#include <sys/socket.h>int socket(int domain, int type, int protocol); 功能: 创建一个套接字,返回一个文件描述符参数: domain:通信域,协议族 AF_UNIX 本地通信 AF_INET ipv4网络协议 AF_INET6 ipv6网络协议 AF_PACKET 底层接口 type:套接字的类型 SOCK_STREAM 流式套接字(tcp) SOCK_DGRAM...
X86汇编&内联汇编
一、基础知识1.CPUCPU控制整个计算机运作和运算。要想让CPU工作,就需要向它提供指令和数据。 2.指令(1).汇编指令直接被CPU执行的指令 (2).伪指令指导汇编器工作的指令,不生成机械码。 段定义指令:如SEGMENT、ENDS,用于定义和结束一个段。 数据定义指令:如DB、DW,用于定义字节或字数据。 常量定义指令:如EQU,用于定义常量。 (3).符号指令用于标识变量、常量、代码段等,在汇编过程中被替换为具体的地址或值。它们没有对应的机器码。 标签:用于标识代码中的位置。 1LABEL: ; 定义一个标签LABEL 宏定义:如MACRO,用于定义宏,简化代码编写。 1MYMACRO MACRO ; 宏定义内容...