摘要:
这里我用的是vs2019开发的 首先创建一个mfc项目 名字自己取 选择基于对话框,在静态中使用mfc 直接点完成就好了,这个时候我们创建3个列表一个显示头部功能栏 一个是显示服务器的 一个显示消息日志列表 添加size消息处理 在主窗体改变大小时 相应改变list 大小 void CRedmanC 阅读全文
摘要:
首先来看我们需要用到的技术 1.Windows控件使用 2.多线程,线程同步,互斥等 3.Socket通信 4.Winddos下远程注入技术 dll注入 5.hook 6.Windows服务程序的开发 7.视频图像算法 8.设计模式 大概是这么多初期用的技术 ,后面的技术就是 1.驱动 2.免杀 暂 阅读全文
摘要:
网上下载的小游戏,试试看能不能让飞机自己躲子弹 看pe结构是一个固定基址不是变址这样就不用算偏移了 先是更具屏幕显示字符串找到打印函数 的位置 一步步向上看他的逻辑处理 堆栈返回地址 猜测用了bitblt 函数 找到关键判断 接着找子弹的地址 关键跳上面一个函数就是判断是否在子弹范围 里面肯定有子弹 阅读全文
摘要:
#include <windows.h> int main() { //绝对路径 char csPath[] = "C:\\Users\\Lenovo\\Desktop\\ConsoleApplication3\\Debug\\config.ini"; char csBuffer[256]; //创 阅读全文
摘要:
首先构建一个正常的dll 创建动态链接库 // dllmain.cpp : 定义 DLL 应用程序的入口点。 #include "pch.h" #include <stdio.h> BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for 阅读全文
摘要:
上一篇 用的命令 cl /c xx.cpp //编译成obj link /dll /out:mou1.dll x.obj //链接生成dll 文件 cpp 的导入可以直接声明 导出函数 extern "C" __declspec(dllexport) void mou1() { puts("mou1 阅读全文
摘要:
vs 可以直接编写创建 可以以 一个函数一个cpp 文件 来创建lib 库 类似 #include <stdio.h> extern "C" void mou1() { puts("mou1"); } 也可以通过 手工编译 cd 到当前文件夹 cl /c mou.cpp //编译 obj 文件lib 阅读全文
摘要:
初始化窗体 函数 int APIENTRY wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPWSTR lpCmdLine, _In_ int nCmdShow) { } 第一个参数是 装载基地址 阅读全文
摘要:
typedef struct _IMAGE_TLS_DIRECTORY32 { DWORD StartAddressOfRawData; DWORD EndAddressOfRawData; DWORD AddressOfIndex; // PDWORD DWORD AddressOfCallBac 阅读全文
摘要:
typedef struct _IMAGE_DELAYLOAD_DESCRIPTOR { union { DWORD AllAttributes; struct { DWORD RvaBased : 1; // Delay load version 2 DWORD ReservedAttribute 阅读全文
摘要:
0x01IMAGE_RESOURCE_DIRECTORY 资源表分布图 查看一个exe 资源表 4000位置 资源目录头的结构体 typedef struct _IMAGE_RESOURCE_DIRECTORY { DWORD Characteristics; DWORD TimeDateStamp 阅读全文
摘要:
//@[comment("MVI_tracked")] typedef struct _IMAGE_BASE_RELOCATION { DWORD VirtualAddress; DWORD SizeOfBlock; // WORD TypeOffset[1]; } IMAGE_BASE_RELOC 阅读全文
摘要:
_IMAGE_EXPORT_DIRECTORY 这个结构体 typedef struct _IMAGE_EXPORT_DIRECTORY { DWORD Characteristics; DWORD TimeDateStamp; WORD MajorVersion; WORD MinorVersio 阅读全文
摘要:
导入表在就是在.rdate 节表当然不绝对 导入表在 数据目录 第2个 导入函数在第13个 可以看到rdata 表 起始2000位置 导入表在2538 iat 在2000 这里的rva 地址都要转换为foa 地址 就是 当前rva-初始rva+foa偏移 就是文件物理偏移位置 通过数据找到导入表位置 阅读全文
摘要:
0x01IMAGE_DOS_HEADER 首先是dos头 typedef struct _IMAGE_DOS_HEADER { // DOS .EXE header WORD e_magic; // Magic number WORD e_cblp; // Bytes on last page of 阅读全文
摘要:
当我们在od 调试时 看到虚拟rva 如何转换到对应的foa地址 00477a40 就是他的va va=rva+入口地址 先看一下内存地址 可以看到此代码地址 位于 upx1 块内 在用pe工具查看 他的文件偏移地址 foa 可以看到是 400h 计算公式就是 upx1(rva)-当前你要找到rva 阅读全文
摘要:
首先可以利用一些工具来查看他的编程语言。 0x01Delphi 可以直接查找特征二进制字符串 ??是任意字节的意思 这个特征码bc++同样适用 740E8BD38B83????????FF93???????? 找到的是je 在下面的call 下断点 往复一直下一个都下断点 可以看到成功断下。 也可以 阅读全文
摘要:
看一个简单示例 看下401301地址 同一个地址 壳还未释放时候 释放后得样子 这里可以加一个初始化api断点 bp GetStartupInfoA 这个重新加载再看 你下断点也不会被激活 但是在初始化断点后就可以看到 bp GetStartupInfoA 拦截下后 就是壳释放后 在下程序断点就不会 阅读全文
摘要:
当遇见地址之后大概率 会有文件操作 这里根据最近一个函数 只是要调用的函数进行参数初始化 对文件需要的参数进行初始化 这里的80 就是 80000000 文件的读取属性 #define GENERIC_READ (0x80000000L) 可以看到读取文件以ascii 形式 HANDLE Creat 阅读全文
摘要:
字符串对比的代码反汇编可以看到这个指令 repe是一个串操作前缀,它重复串操作指令,每重复一次ECX的值就减一 或者ZF为0时停止。 通过zf位判断2个字符串是否相等 为0时表示不相等 1为相等 阅读全文