自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

原创 清除句柄表保护进程

上节课老师讲错了属性是最后两位,0xfffffffc,而且从句柄表中取出来的值也要位运算才能用。

2024-05-07 04:11:23 129

原创 0环进程断链

通过PsLookupProcessByProcessId查询PID=4的进程获得eprocess,再通过偏移量遍历链表对比断链。

2024-05-02 16:27:12 174

原创 特征码定位KiProcessorBlock

流程很简单,但是需要熟悉下。

2024-04-30 17:26:48 84

原创 32位ssdthook

先获取_KPCR->_KPRCB->_KTHREAD->ServiceTable。然后需要关闭写保护->修改函数->开启写保护。替换的函数注意堆栈平衡。

2024-04-29 22:19:24 84

原创 三环重写OpenProcess

调用过程重点为 KernelBase->ntdll,kernelbase中做了数据的处理,函数名字为NtOpenProcess,ntdll中则选择服务号进入0环,我们可以逆向NtOpenProcess分析具体用了什么参数。

2024-04-27 19:54:04 238

原创 PAE分页模式下实现高2g内存全可被用户权限访问

无论是PDEPTE还是PTE还是PDE在虚拟地址内都有一张线性的表里面存的PTEPDE都是PTE所以说,我们只需要改1024*1024个PTE的属性就行了,属性要改US位和G位才可以实现用户权限访问。

2024-04-23 00:43:57 108

原创 Inline hook

函数地址是一个跳转点,所以就非常适合我们写hook,hook回去的函数就不写了,那也太无聊了,怎么hook来怎么写回去就行了。这里的实验用到了vs的编译特性。

2024-04-15 12:45:41 102

原创 IATHOOK

没什么好研究的,课上讲的问题原因是,IAT是管理虚拟4gb内函数的地址,messagebox就在其中,调用了就会无限循环递归,造成线程卡死。

2024-04-15 07:50:03 116

原创 滴水 加载进程,内存写入

第一个跳转这个,没写好,如果你的导入表dll依赖其他dll,那么你就需要递归,但我怎么也写不出来,那个递归莫名其妙的有个死循环,一直重复包含。后面贴了IAT修复函数,里面有写一个坑,修复IAT的时候注意对着INT修改成IAT,因为后面那个程序的IAT是已经被修过的了,没有储存数据。

2024-04-15 05:43:45 204

原创 远程线程注入

获取PID懒得搞了,无非就是多调用几个API,我是直接看任务栏管理器直接写的哈哈。

2024-04-14 04:09:36 72 1

原创 滴水加密壳,类似傀儡进程

还有就是滴水给出的细节没给全,因为我的试验是,两个软件如果文件对齐,内存对齐是一样的就能运行,否则不行。我试了两组例子,一组1000 10000,一组1000 200,一样就能够运行,不一样就不行。该踩的坑有,ASLR基址,大意就是不能修改imagebase不然后系统一检测到就报c0000005,所以大多数软件都不需要修复重定位表,大部分imagebase都是0x400000。我猜测是因为上下文里还有需要修改的东西。总之是一项过时的技术,体验思路就行,没必要抓着这些细枝末节刨根问底。

2024-04-13 20:36:15 176 3

原创 多线程测试

因为我不想写gui所以用的控制台写的,不过可能写的有问题,因为后面的线程顺序不会改变,永远是线程1->2->3->4,也可能是我的cpu执行太快了,因为之前上课测试的两条线程不用临界体10000次全局变量数据会有误差,而我试了一下我的开了20条线程跑不用临界体也不会有误差。

2024-04-12 11:39:41 195

原创 资源表解析+下载图标

下载图标则是在上面解析的基础上做一个判断ID?=3,是的话就是全部从fileBuffer转化成文件,转化名字可能要用点字符串处理函数。我选择使用两个for循环遍历出所有的具体项,说复杂也不算。改名字就没去做了,反复造轮子而已。资源类型->编号->具体项。

2024-04-11 02:15:11 114 1

原创 汇编学习之 repne scasb

【代码】汇编学习之 repne scasb。

2024-04-10 05:26:23 188 1

原创 导入表注入

感觉实现一个判断是否为字符串太复杂了,所以因地制宜不如直接判断这个数字是否在合理的范围内,这个范围不可能为字符串指针,正常情况也不能有比这个更大的序号。与其他人的导入表注入没什么区别,但是多加了一个判断是否为序号寻找,还是名字寻找。

2024-04-05 22:08:44 136 1

原创 打印绑定导出表

没什么难度,不过我找测试的dll太太费劲了,一般用这个提升启动速度的都是老东西了,我翻了半天才翻出来1998的老宝贝才翻出来带有ref的绑定导出表。不过值得一提的是ref表里有一个保留位,我觉得那是一个跟绑定导入表对齐,方便计算所以故意留的保留位,如果要解析小表只用绑定导入表的指针+1就行了。

2024-04-05 18:03:13 149 1

原创 打印导入表

打印这个表比较简单,看图说话水准。

2024-04-05 04:44:50 87 1

原创 移动导出表,重定位表,手动修复重定位表

要写这几个函数会频繁用到FOA转VA。

2024-04-04 21:00:33 199 1

原创 打印重定位表

【代码】打印重定位表。

2024-04-04 04:33:18 81 1

原创 打印导出表,还有两个莫名其妙的函数

【代码】打印导出表,还有两个莫名其妙的函数。

2024-04-04 01:43:01 115 1

原创 合并节并且遇到逆天情况 + 打印目录表

SizeOfRawData会影响内存写入到文件里ImageBuffer To FileBuffer,毕竟他在文件中大小为0,那么我们就只需要在前面做一个判断是否为0,为0就不写。如果说合并的第一个节的PointerToRawData和SizeOfRawData 都为0该怎么办,没想到我随便用vs生成的测试软件能测试的这么极端…解决方法放在代码里了。大概就是PointerOfRawData会影响pe headers的覆盖,所以说合并第一节时需要做一个循环判断。算是多踩几个雷,对pe结构理解更深了吧。

2024-04-03 04:25:59 156 1

原创 添加节 + 扩大节

【代码】添加节 + 扩大节。

2024-04-03 00:03:35 242 1

原创 shellcode写入的随机基址处理

昨天写完shellcode任意节写入时,我想测试文件对齐与内存对齐不一样的文件能不能成功(因为我实在找不到一个可以提供我测试的软件,很多软件没有用user32这个dll,其他的我也还没学),于是自己写了一个仅调用了messagebox的函数,结果没有成功,我以为是我的imagebuffer没有处理好,结果拖进od计算才发现,我的e8后面的地址算错了,e9却对了,需要看到这个字节掌控了很多权限,但是网络上看的视频却没有把这个属性标红。最后关掉,shellcode就能工作了。

2024-04-02 15:56:19 148 1

原创 任意节写入shellcode

【代码】任意节写入shellcode。

2024-04-02 04:05:14 83 1

原创 在.text节中写入shellcode

【代码】在.text节中写入shellcode。

2024-04-01 21:27:42 100

原创 FileBuffer->ImageBuffer->FileBuffer PE结构

以前要是没去浪费时间干其他事情,可能在这个领域也能有所建树了吧,虽然每次安慰自己多了很多人生阅历,但谁不想有个happy ending呢?上一次写博客都是4年前了,现在重新学习又是感慨万千。

2024-04-01 17:01:48 214

原创 根据特征码找到未导出的内核函数 PspTerminateProcess

使用的是一个UINT32数组来存放shellcode没有考虑全局变量的问题#include <ntifs.h>typedef NTSTATUS(*pFunTerminateProcess)(IN PEPROCESS Process, IN NTSTATUS ExitStatus);typedef struct _LDR_DATA_TABLE_ENTRY { LIST_ENTRY InLoadOrderLinks; LIST_ENTRY InMemoryOrderLinks; LIS

2020-09-13 17:25:23 955

原创 内存写入 隐藏模块注入

思路:1.获取自身SizeOfImage ImageBase2.远程申请注入进程SizeOfImage大小的内存 内存位置随机 获得内存位置:ProcessAddr3.申请一段SizeOfImage大小缓冲区,写入自身程序 内存位置:ImageBase4.修复Image重定位表(参数为:ProcessAddr)5.写入缓冲区ProcessAddr,SizeOfImage6.远程线程申请入口点为DWORD WINAPI(LPVOID lparameter)7.入口点修复导入表,因为

2020-09-11 13:54:48 1637

原创 保护模式测试

工具:VC 6 WinDbg第一题//注意点:下面采用的都是PAE分页(2-9-9-12)公式:PDE = ((dwAddr>>21)<<3) & 0x3FF8 + 0xC0600000 ; //2 + 9PTE = ((dwAddr>>12)<<3) & 0x7FFFF8 + 0xC0000000;// 2 + 9 + 9第一题难点在于计算PDE PTE#include "stdafx.h"#include <Wind

2020-09-11 13:13:24 590

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除