- 博客(9)
- 收藏
- 关注
原创 VS2019+WDK环境搭建
注意点:缺少ntddk.h:原因是装的WDK版本和SDK版本不匹配所致,或者sdk没有装好安装SDK一定得与WDK相匹配VS2019+WDK10开发驱动1、安装VS2019,已安装的话忽略2、安装WDK10首先先下载离线版,这里下载的是10.0.19041.685这个版本(要注意版本),离线版下完后进入下载目录那里先选择下载离线版:再到到下载目录那里点击wdksetup.exe,这次选择安装:然后安装:离线版需要数字签名,安装:3、同步WDK与SDK的版本打开VS,工
2021-05-22 16:38:19
12061
原创 TLS反调式浅谈
TLS,局部线程存储。先于OEP执行,可防止多线程争用资源,现常用于反调试AddressOfCallBacks为一个函数指针数组,里面存放callback函数地址,系统会在OEP之前调用。简单使用TLS:#include "iostream"#include "Windows.h"#include "tchar.h"//#include "ntdll/ntdll.h"//使用TLS#pragma comment(linker,"/INCLUDE:__tls_used")DWORD isD
2021-03-30 22:04:16
208
原创 CTF--伪随机数爆破
CTF–伪随机数爆破题目:一个由纯汇编编写的CrackMe,要求输入正确密码,不能直接爆破.题目分析:1、先托到PE文件查看工具里看看,发现这软件有TLS表,几乎就可以直接判断它带有了反调试,具体是怎样反调试还得详细查看2、将程序先丢进OD,没有断下,很正常。因为有反调试嘛3、于是我们设置在TLS下断 ( 需要OD有这个插件 )或者直接查看TLS表中AddressOfCallBacks来得到第一个callback函数的地址,这里是0x4020004、直接在0x402000这里下断,重新运
2021-03-30 21:59:30
2662
原创 Win32滴水项目---进程监控
进程监控–项目练习项目要求:特别说明注意:此次项目在Win XP下编写,Win10上没有尝试。还有,监控程序(Hacker.exe)需拥有重定位表,就是DEBUG版使用内存写入的方式,实现模块隐藏.IAT表中有的API使用IAT Hook实现 不在IAT表的使用Inline Hook实现将监控的API参数写入到文件中进程间通信方式自己选择,有创新最好所有的HOOK能够正常卸载,不能导致进程意外结束我采用的是内存写入的方式注入(将当前进程代码重定位写入远程进程,在远程进程中修复IAT
2021-03-11 23:28:29
1103
原创 进程通信-共享内存
进程通信-共享内存通过CreateFileMapping映射的内存,可以由2个或2个以上进程共享物理页。它创建了一个内核对象,并且可以在创建物理页的时候将文件映射到物理页上。实现步骤:在接收端进程中注入代码hook或开线程在发送端对共享的内存作写入操作1、创建物理页g_hMapFile = CreateFileMapping( INVALID_HANDLE_VALUE, //-1,表示不将文件映射到该物理页 NULL, //安全属性 PAGE_READWRIT
2021-03-11 22:06:22
110
原创 Inline Hook
inline hook说明IAT hook 还是需要有先行条件的,就是导入表里面得有所使用函数的地址。导入表里面没有被调函数的地址情况:被调函数与调用函数在同一模块直接自己使用LoadLibrary,GetProcAddress来加载函数对于这种无法用IAT hook 的情况,我们可以使用inline hook。inline hook 本质:就是jmp到我们需要执行的代码,执行完后再jmp回来。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y5eG0Wbm
2021-03-11 21:56:19
2759
1
原创 IAT HOOK
IAT HOOKIAT hook,通过把IAT表中的函数地址修改成我所要执行的函数地址,完成改变程序流程举例:比如原本是静态(通过系统自己加载dll)使用函数MessageBox,程序会FF间接call,找IAT表里面存的函数地址。倘若我在程序使用函数MessageBox之前,就对IAT表里面的函数地址做修改。那么,程序再call函数MessageBox的地址时,就会call我修改的那个函数的地址那里。从而实现改变程序流程案例:实现IAT hook,要求返回函数MessageBox的参数、返回值到
2021-03-11 21:37:36
618
原创 内存写入注入
内存写入注入如果进程A本身就给了其他进程申请和写入空间的权限,那我只要将模块复制到指定进程A的空间里面,再修改一些表,再利用远程线程或者hook也就能让我们的模块在进程A运行,这就是内存写入注入思路只要我进程A允许进程B有写入操作就可以实现注入。这样实现了隐藏模块的注入拓展:若是不允许别的进程有写入操作,但应该也会允许系统进程有写入操作,只要我将注入功能注入到系统进程里面,让系统进程对进程A进行内存写入注入就可以了。相当于内存写入注入+伪装合法软件注入步骤1、内存写入:获取当前模块句柄,得
2021-03-06 12:16:09
2553
原创 远程线程注入
远程线程模块注入首先明白自己进程加载dll,可以直接LoadLibrary就可以把模块加载进去。但是远程的进程该怎么让它加载直接写的模块呢?思路:如果能够让远程进程自己执行这段代码:HINSTANCE hModule = LoadLibrary("InjectDll.dll");就达到注入DLL的目的了.步骤:创建远程线程时,需要指定进程句柄/线程函数/线程函数的参数进程句柄的获取,这里用PID来获取 OpenProcess(PROCESS_ALL_ACCESS, FALSE,
2021-01-29 21:48:56
210
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人