随笔分类 - 逆向
逆向知识&笔记
摘要:导入表 确定依赖模块 导入表说明了Pe文件需要依赖哪些模块以及依赖这些模块中的哪些函数。 导入表不是一个,是一堆,导入几个模块就有几张导入表。 导入表的结构 _IMAGE_IMPORT_DESCRIPTOR typedef struct _IMAGE_IMPORT_DESCRIPTOR { unio
阅读全文
摘要:导出表 如何定位导出表(这段写的不是很清楚) 在扩展pe头的最后一个成员(16个结构体*8bytes)中查找 导出表的属性在第一个结构体中: 第一个DWORD是导出表的RVA,要先转化成FOA 然后就可以找到导出表结构体 关键结构体:_IMAGE_EXPORT_DIRECTORY typedef s
阅读全文
摘要:之前一直没学mfc,今天有点无聊,就看了一点。 MFC 本质就是对win32的封装。 通常的配置是静态编译mfc,会方便一些。 mfc的层次结构图 在msdn里搜Hierarchy Chart。 CWinApp类 基于CWinApp的应用程序对象,程序本体,有且只能有一个。 必须要覆盖CWinApp
阅读全文
摘要:初探shellcode~ 主要思路: 0.构造要写入的代码: 例:MessageBox: (push 00)*4 = 6a00 call MessageBox(通过要跳转的地址-E8这行指令的地址-5): 相对跳转 E8 xx xx xx xx jmp 回到正常的执行流程: 同上也是相对跳转 E9
阅读全文
摘要:引出问题:如果想改变全局变量的初始值,该怎么做? 如果有初始值,初始值是存在PE文件中的。 在文件中和在内存中的对齐方式不一样。 !!!有些情况下内存对齐和文件对齐一样的也需要计算才能找到对应的位置!!! 内存中展开从ImageBase(扩展PE头中)开始,然后依次对齐。 RVA: 相对虚拟地址 =
阅读全文
摘要:今天复习了一下tcp通信的实现,写了写代码。 简单的总结一下: 服务器作为监听者的角色需要先创建服务器socket套接字,然后使用bind绑定套接字和端口信息等等,再创建用于连接客户端的socket套接字,使用accept函数等待客户端的连接并处理。 客户端则只需要创建用于连接服务器的socket套
阅读全文
摘要:主要涉及,PE文件的两种状态->文件对齐和内存对齐。 节表由n(在标准PE头中有属性标明数量)个IMAGE_SECTION_HEADER结构体(40bytes)组成: 结构如下: 1 typedef struct _IMAGE_SECTION_HEADER { 2 BYTE Name[IMAGE_S
阅读全文
摘要:本随笔记录通过win32api学习进程间通信和dll注入外挂原理的学习过程 基本思路: 通过dll注入的方式将代码加载进目标进程 通过共享内存的方式进行数据通信(共享物理页) 通过循环读取命令队列,并通过内联汇编的方式调用各种函数 准备/具体实现: 1.获取进程PID: 说明通过函数去实现,这样就不
阅读全文
摘要:本文记录学习远程线程注入dll的过程 思路:通过LoadLibrary函数将自己的dll加载至目标进程的空间并执行代码。 具体实现步骤: 在A进程中分配空间,存储"X.dll"的文件路径 获取LoadLibrary函数的地址 创建远程线程,执行LoadLibrary函数 涉及的具体api函数: Lo
阅读全文