随笔分类 -  windows原理和逆向

摘要:1、windows下运行一个exe程序,一般都是直接双击exe,然后就能运行了,对于普通小白用户来说非常简单易用,所以windows能垄断桌面个人PC领域几十年是有原因的!对于业内的人士而言,当用双击exe的时候: 为啥能运行这个程序了? 所谓“运行”的本质到底是什么? 为什么能在任务管理器或其他类 阅读全文
posted @ 2021-05-05 22:26 第七子007 阅读(1237) 评论(1) 推荐(0) 编辑
摘要:一般而言,我们做windows内核和VT测试,都是在自己的物理机装vmware或virtualBox虚拟机,再在虚拟机装windows,然后在物理机装windbg链接到虚拟机,通过windbg调试虚拟机的windwos内核;如果是VT测试,就要开启虚拟机的VT,这就涉及到VT嵌套了,整体架构如下: 阅读全文
posted @ 2020-12-12 22:35 第七子007 阅读(2814) 评论(0) 推荐(0) 编辑
摘要:上次介绍了VT的基本原理和核心流程,今天细说VT的关键代码。核心代码的git地址:https://github.com/zzhouhe/VT_Learn ;这是一个miniVT框架,实现了最基本的VT框架功能,非常适合初学入门。 VT的基本流程如下,下面就按照这个流程细说关键代码; 检查是否支持VT 阅读全文
posted @ 2020-12-06 19:20 第七子007 阅读(4024) 评论(0) 推荐(0) 编辑
摘要:说到虚拟化、虚拟机等名词,IT领域的小伙伴肯定不陌生,业内人士或多或少的都用过VMware或其他PC虚拟机重新搭建一个系统,用来做各种高危测试,避免影响物理机的OS;10年前热炒的云计算,也是基于虚拟化技术的;多年以前,早期的虚拟化还是靠虚拟机软件模拟执行指令后返回结果。大约从2005年开始,int 阅读全文
posted @ 2020-11-30 21:45 第七子007 阅读(3478) 评论(1) 推荐(1) 编辑
摘要:对于windwos逆向人员来说,不论是写外挂、写病毒/木马,都需要打开其他内存的空间,改写某些关键数据,达到改变其原有执行流程的目的。那么日常的工作肯定涉及到openprocess、readprocessmemory、writeprocessmemory等函数;这些函数都是怎么被调用的了? 1、wi 阅读全文
posted @ 2020-11-07 19:24 第七子007 阅读(1943) 评论(0) 推荐(1) 编辑
摘要:1、今天拿到一个exe,用IDA打开后在main的代码如下,想直接F5,报错如下: 细看代码,有两个比较有意思的地方: 第一个红框,JZ和JNZ跳转到同一个地址:0x4010A1+1=0x4010A2 第二个红框,也就是0x4010A1的开始地址是一个call指令,5字节长度;再下一个指令就从0x4 阅读全文
posted @ 2020-11-05 21:23 第七子007 阅读(737) 评论(0) 推荐(0) 编辑
摘要:前面几篇文章介绍了通过APC注入、进程注入、windows窗口处理函数回调、kernercallback回调执行shellcode,今天继续介绍通过heap Spray(翻译成中文叫堆喷射)执行shellcode的方法; 所谓堆喷射,本质上是在堆上分配空间,然后拷贝shellcode到这里执行,思路 阅读全文
posted @ 2020-07-09 22:36 第七子007 阅读(631) 评论(0) 推荐(0) 编辑
摘要:https://www.cnblogs.com/theseventhson/p/13236421.html 这里介绍了利用回调函数执行shellcode的基本原理;这里介绍另外一种利用回调执行shellcode的方法:kernelcallbacktable;从字面意思看,kernelcallback 阅读全文
posted @ 2020-07-05 22:17 第七子007 阅读(844) 评论(0) 推荐(0) 编辑
摘要:今天介绍第三种远程执行shellcode的思路:函数回调; 1、所谓回调,简单理解: windows出厂时,内部有很多事务的处理无法固化(无法100%预料外部会遇到哪些情况),只能留下一堆的接口,让开发人员根据实际情况完善这些事务的处理过程,比如多线程;windows提供了创建线程的接口Create 阅读全文
posted @ 2020-07-05 00:00 第七子007 阅读(992) 评论(0) 推荐(0) 编辑
摘要:https://www.cnblogs.com/theseventhson/p/13218651.html 上次分享了基本的远程注入方法,遗留了一个问题:shellcode执行完后怎么回到线程supend之前的地址继续执行原线程的代码了?当时想的动态获取context中eip的地址,再把push e 阅读全文
posted @ 2020-07-03 22:51 第七子007 阅读(498) 评论(0) 推荐(0) 编辑
摘要:https://www.cnblogs.com/theseventhson/p/13199381.html 上次分享了通过APC注入方式,让目标线程运行shellcode。这么做有个前提条件:目标线程是alertable的,否则注入了也不会立即被执行,直到状态改为alertable,但笔者暂时没找到 阅读全文
posted @ 2020-07-02 15:16 第七子007 阅读(1624) 评论(0) 推荐(0) 编辑
摘要:https://www.cnblogs.com/theseventhson/p/13197776.html 上一章介绍了通用的shellcode加载器,这个加载器自己调用virtualAlloc分配空间、复制shellcode、执行shellcode,所有操作都在加载器的空间,隐蔽性不强,容易被发现 阅读全文
posted @ 2020-06-27 23:29 第七子007 阅读(2140) 评论(3) 推荐(0) 编辑
摘要:https://www.cnblogs.com/theseventhson/p/13194646.html 分享了shellcode 的基本原理,核心思路是动态获取GetProcAddress和LoadLibrary函数地址,再通过这两个函数获取其他windows dll提供的函数地址;需要注意的是 阅读全文
posted @ 2020-06-27 12:28 第七子007 阅读(1187) 评论(0) 推荐(0) 编辑
摘要:shellcode,一段短小精干的代码,放在任何地方都能执行,不依赖当前所处环境,那么就有这么几点要求: 不能有全局变量:函数里的局部变量在栈空间,地址是执行的时候动态分配的;但全局变量在编译时,会由编译器分配好固定的存储空间。编写shellcode的程序肯定会为这个全局变量预留空间,但执行shel 阅读全文
posted @ 2020-06-26 18:26 第七子007 阅读(1483) 评论(0) 推荐(0) 编辑
摘要:外挂、木马、病毒等可能需要读取其他进程的数据,windows提供了OpenProcess、ReadProcessMemory等函数。但越是大型的软件,防护做的越好,大概率会做驱动保护,比如hook SSDT表等,这些系统调用都会先被过滤一次,导致返回的数据不是想要的;为了确保能读到目标进程数据,最好 阅读全文
posted @ 2020-06-24 17:29 第七子007 阅读(2339) 评论(0) 推荐(0) 编辑
摘要:windows平台中,某些进程做了各种保护,比如hook了terminateProcess,又或者注册了进程终止函数的回调。当调用这些API或任务管理器终止该进程时,会被绕过,典型如某些杀毒软件,怎么才能终止这些进程了? 进程是由线程组成的,如果该进程名下所有线程都终止,此进程也会被windows回 阅读全文
posted @ 2020-06-01 14:19 第七子007 阅读(897) 评论(0) 推荐(0) 编辑
摘要:在windows平台做逆向、外挂等,经常需要调用很多未导出的内核函数,怎么方便、快速查找了?可以先用IDA等工具查看硬编码,再根据硬编码定位到需要调用的函数。整个思路大致如下: 1、先查找目标模块 遍历模块的方式有多种。既然通过驱动在内核编程,这里选择遍历driverObject的DriverSec 阅读全文
posted @ 2020-06-01 11:43 第七子007 阅读(1833) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示