• 2024-07-21C++合作开发项目:美术馆1.0
    快乐星空MakerZINCFFO合作入口:CM工作室效果图:代码:(还有几个音乐!)main.cpp#include<bits/stdc++.h>#include<windows.h>#include<conio.h>#include<time.h>#include"music.h"usingnamespacestd;structCITYBLOCK{ stringi
  • 2024-07-13反射DLL注入原理解析
    反射DLL注入又称RDI,与常规DLL注入不同的是,它不需要LoadLibrary这个函数来加载dll,而是通过DLL内部的一个函数来自己把自己加载起来,这么说可能会有一点抽象,总之这个函数会负责解析DLL文件的头信息、导入函数的地址、处理重定位等初始化操作,先不用理解这个函数是怎么实现的
  • 2024-05-18驱动内存加载[实战]
    08驱动内存加载[项目]目标:实现一个加载器,让驱动不落地加载DOS头和NT头DOS头kd>dt_IMAGE_DOS_HEADER-r3ntdll!_IMAGE_DOS_HEADER+0x000e_magic:Uint2B+0x002e_cblp:Uint2B+0x004e_cp:Uint2B+0x006e_crlc
  • 2024-03-17滴水逆向笔记系列-win32总结8-59.枚举窗口_鼠标键盘事件函数-60.加密壳项目
    第五十九课win32枚举窗口_鼠标键盘事件函数1.查找指定窗口::FindWindow()函数获取窗口句柄,再通过句柄控制窗口,函数的参数可以通过vs的spy++工具获得TCHARszTitle[MAX_PATH]={0}; HWNDhwnd=::FindWindow(TEXT("#32770"),TEXT("飞鸽传书IPMessenger"));
  • 2024-03-17滴水逆向笔记系列-win32总结10-63.IAT HOOK-64.Inline HOOK
    第六十三课IATHOOK这节课得把前面PE部分的IAT表复习好,再来做就简单多了1.IATHOOK是什么其实就是找到IAT表的位置再换成自己定义的函数,只是我们替换的函数需要和原函数的结构保持一直,比如我们要HOOKMessagebox函数,那么我们需要定义一个MyMessagebox函数,他的结构应该与Messa
  • 2024-03-16滴水逆向笔记系列-PE总结2-25.FileBuffer-ImageBuffer-26.代码节空白区添加代码-27.新增节_扩大节_添加代码
    第二十五课FileBuffer-ImageBuffer1.PE文件执行的总过程第二十三课已经说过了,文件先复制一份读入虚拟内存中(FileBuffer),接着要运行时将FileBuffer中的文件数据拉伸,重载到4GB的虚拟内存中(ImageBuffer)但ImageBuffer还不是文件运行时在内存的真正状态,ImageBuffer还没表示文件已
  • 2024-03-16滴水逆向笔记系列-PE总结3-28.数据目录-29.静态链接库-动态链接库-30.导出表
    第二十八节课数据目录1.数据目录是什么可选PE头最后一个成员,就是数据目录,一共有16个分别是:导出表的数据目录、导入表的数据目录、资源表的数据目录、异常信息表的数据目录、安全证书表的数据目录、重定位表的数据目录、调试信息表的数据目录、版权所有表的数据目录、全局指针
  • 2024-03-16滴水逆向笔记系列-PE总结4-31.重定位表-32.IAT表_导入表-33.绑定导入表
    第三十一课重定位表一.引入重定位表1.程序加载过程程序加载后,操作系统会给程序分4GB虚拟内存,先装载自身的.exe:如先把ipmsg.exe拉伸贴到ImageBase(0x00400000),分配空间大小为SizeOfImage(0x3D000)但并不是所有文件的ImageBase都是0x400000,这个值是可以修改的:打开VC->右键你的
  • 2023-09-19挂接API
    //hook.cpp:Definestheentrypointfortheconsoleapplication.//#include"stdafx.h"#include<windows.h>PVOIDHookAPI(LPBYTEpbModule,PCSTRpszName,PVOIDpvOrg,PVOIDpvNew){ PIMAGE_THUNK_DATAr; PIMAGE_NT_HEADERSp; PIMAGE_IMPOR
  • 2023-09-122.14 PE结构:地址之间的转换
    在可执行文件PE文件结构中,通常我们需要用到地址转换相关知识,PE文件针对地址的规范有三种,其中就包括了VA,RVA,FOA三种,这三种该地址之间的灵活转换也是非常有用的,本节将介绍这些地址范围如何通过编程的方式实现转换。如下是三种格式的异同点:VA(VirtualAddress,虚拟地址):它是在进程的
  • 2023-09-112.13 PE结构:实现PE代码段加密
    代码加密功能的实现原理,首先通过创建一个新的.hack区段,并对该区段进行初始化,接着我们向此区段内写入一段具有动态解密功能的ShellCode汇编指令集,并将程序入口地址修正为ShellCode地址位置处,当解密功能被运行后则可释放加密的.text节,此时再通过一个JMP指令跳转到原始OEP位置,则可继
  • 2023-09-082.8 PE结构:资源表详细解析
    在WindowsPE中,资源是指可执行文件中存放的一些固定不变的数据集合,例如图标、对话框、字符串、位图、版本信息等。PE文件中每个资源都会被分配对应的唯一资源ID,以便在运行时能够方便地查找和调用它们。PE文件中的资源都被组织成一个树形结构,其中最顶层为根节点(Root),下一级为资源类型
  • 2023-09-082.9 PE结构:重建导入表结构
    脱壳修复是指在进行加壳保护后的二进制程序脱壳操作后,由于加壳操作的不同,有些程序的导入表可能会受到影响,导致脱壳后程序无法正常运行。因此,需要进行修复操作,将脱壳前的导入表覆盖到脱壳后的程序中,以使程序恢复正常运行。一般情况下,导入表被分为IAT(ImportAddressTable,导入地址表)
  • 2023-09-082.9 PE结构:重建导入表结构
    脱壳修复是指在进行加壳保护后的二进制程序脱壳操作后,由于加壳操作的不同,有些程序的导入表可能会受到影响,导致脱壳后程序无法正常运行。因此,需要进行修复操作,将脱壳前的导入表覆盖到脱壳后的程序中,以使程序恢复正常运行。一般情况下,导入表被分为IAT(ImportAddressTable,导入地址表
  • 2023-09-082.8 PE结构:资源表详细解析
    在WindowsPE中,资源是指可执行文件中存放的一些固定不变的数据集合,例如图标、对话框、字符串、位图、版本信息等。PE文件中每个资源都会被分配对应的唯一资源ID,以便在运行时能够方便地查找和调用它们。PE文件中的资源都被组织成一个树形结构,其中最顶层为根节点(Root),下一级为资源类
  • 2023-05-08逆向-第五次实验-PE文件解析
    #include<stdio.h>#include<string.h>#include<windows.h>charFileName[100]={0}; voidPrintNTHeaders();LPVOIDReadPEFile(); intmain(){ printf("Pleaseinput:(forexample:D:/user/Desktop/PE文件对齐、内存对齐/解析pe头文件/实验.exe)\n"
  • 2023-05-08导出表代码
     #include"stdafx.h"#include<stdio.h>#include<windows.h>#include<malloc.h>////////////////////////////////////////////////////////////////////FileBuffer函数DWORDReadPEFile(LPVOID*ppFileBuffer){ FILE*pFile=NULL; DWO
  • 2023-05-08新增节代码
    #include"stdafx.h"#include<stdio.h>#include<windows.h>#include<malloc.h>#defineShellCodeIen0x12#defineMessageBoxAdder0x77D507EABYTEShellCode[]={ 0x6A,00,0x6A,00,0x6A,00,0x6A,00, 0xE8,00,00,00,00, 0xE9,00,00
  • 2023-04-26代码区添加shellcode
    //p44.cpp:Definestheentrypointfortheconsoleapplication.//#include"stdafx.h"#include<windows.h>#include<malloc.h>#defineShellCodeIen0x12#defineMessageBoxAdder0x77D507EABYTEShellCode[]={0x6A,00,0x6A,00,0x6A
  • 2023-04-26FileBuffer-ImageBuffer代码实现
    #include"stdafx.h"#include<stdio.h>#include<windows.h>#include<malloc.h>////FileBuffer函数DWORDReadPEFile(LPVOID*ppFileBuffer){FILE*pFile=NULL;DWORDSizeFileBuffer=0;pFile=fopen("C://WINDOWS//system
  • 2023-04-04加密与解密之加壳程序
    描述自己实现一个简单的加壳程序,能够对选取程序的代码段进行加密,并添加外壳部分,在运行时还原本文分为三个部分:外壳程序,加壳程序,和用户交互程序外壳程序写到Stub.dll中,方便同加壳程序共享数据,获取原程序的PE文件信息将数据段合并到代码段,方便加壳程序读取并添加到原程序中
  • 2023-03-25热更新—动态加载dll
    热更新:最简单的解释就是不关软件直接更新,更新期间软件直接用。应用程序使用热更新具有以下好处:1.增强应用程序的可扩展性和灵活性2.减少应用程序的停机时间,提高用户体验
  • 2023-03-16DOS头+NT头+节表代码解析
    #include"stdafx.h"#include<malloc.h>#include<windows.h>LPVOIDreadPEFile(LPSTRpeFile)//LPVOID是一个没有类型的指针LPSTR",其相当于char*针{FI
  • 2023-03-16输出所有的PE头信息(notepad)
    #include"stdafx.h"#include<windows.h>#include<malloc.h>#include<stdio.h>#include<winnt.h>LPVOIDReadPEfile(LPSTRfile){FILE*pFile=NULL;DW
  • 2023-02-24Windows黑客编程之内存直接加载运行
    描述编写一款PE加载器,用来将dll和exe文件加载到内存中并运行假设程序需要动态调用dll,内存加载运行技术可以把这些dll作为资源插入自己的程序中,直接在内存中运行即可,不必