摘要:
介绍VMP虚拟化原理之前,先简单介绍一下计算机运行的原理。总所周知,现代计算机的核心部件是CPU、内存、磁盘、键盘、显示器等;最最最核心的就属CPU、内存和磁盘了。用户按开机键,CPU会把OS从磁盘加载到内存运行。由于CPU只能识别并执行二进制文件,所以代码、数据等都是以二进制存放在磁盘和内存的。 阅读全文
摘要:
1、软件的逆向、外挂、破解等,本质上是想办法改变原有代码的执行路径,主要的方式有两种: 改变某些关键数据,比如函数参数(android下有xpose、frida等现成的hook框架,逆向人员只需要找准hook的点就完成了90%的逆向工作)、某些全局变量(比如VX防止多开的mutex);改变这些数据后 阅读全文
摘要:
要想改变目标进程执行流程的办法有很多,最常见的就是hook。为了让目标进程执行特定的代码,可以注入shellcode或dll;shellcode的优点是体积小,不容易被检测到,但功能也相对单一;dll注入优点是可以包含的功能较多,但容易被检测到。本次拿xxxx软件举例做个dll注入; 要做注入,否先 阅读全文
摘要:
防止多开的方法又很多种,比如: 遍历进程,如果目标进程已经存在就认为正在运行,现在的进程退出 互斥体,也就是mutex,本质是生成一个全局变量。如果检测到这个变量已经存在,现在进程就退出 xxxx PC端用的是mutex。可以用OD打开xxxx的exe,然后CTRL+G查找CreateMutex函数 阅读全文
摘要:
上个月做了一个栈溢出执行cmd shell的例子(https://www.cnblogs.com/theseventhson/p/13933230.html),当时在代码中通过数组显式调用了shell函数(a[x] = (int)shell),即把shell函数的地址放在了数组中,只需要通过超(溢) 阅读全文
摘要:
1、今天遇到了一道有意思的数学题: 政府采购一批IT配件,总预算10000元,条件如下: 移动硬盘每个500,普通硬盘每个300,U盘3个100; 所有配件个数加起来100个,并且钱刚好花完; 问题来了: 移动硬盘、普通硬盘、U盘分别买多少个? 这里原理并不复杂,用a、b、c分别表示3种设备的数量, 阅读全文
摘要:
前面费老大劲学习VT的基本原理和框架代码,到底能用来干啥了? VT中,host通过exit事件监控guest的一举一动,稍微“大”一点的动作(进程切换、读写msr、执行cpuid等)都会在guest触发exit,回到host的handle函数处理,在VT框架中,host对guest有绝对的监控和处理 阅读全文
摘要:
一般而言,我们做windows内核和VT测试,都是在自己的物理机装vmware或virtualBox虚拟机,再在虚拟机装windows,然后在物理机装windbg链接到虚拟机,通过windbg调试虚拟机的windwos内核;如果是VT测试,就要开启虚拟机的VT,这就涉及到VT嵌套了,整体架构如下: 阅读全文
摘要:
上次介绍了VT的基本原理和核心流程,今天细说VT的关键代码。核心代码的git地址:https://github.com/zzhouhe/VT_Learn ;这是一个miniVT框架,实现了最基本的VT框架功能,非常适合初学入门。 VT的基本流程如下,下面就按照这个流程细说关键代码; 检查是否支持VT 阅读全文
摘要:
说到虚拟化、虚拟机等名词,IT领域的小伙伴肯定不陌生,业内人士或多或少的都用过VMware或其他PC虚拟机重新搭建一个系统,用来做各种高危测试,避免影响物理机的OS;10年前热炒的云计算,也是基于虚拟化技术的;多年以前,早期的虚拟化还是靠虚拟机软件模拟执行指令后返回结果。大约从2005年开始,int 阅读全文