今天又是emo的一天
竞赛官网 首先有文件,能想到的就是会读,那么直接hook NtCreateFile 断点之后到NtReadFile对参数Buffer下访问断点即可 会断到这里 回溯到找个call的最外层,他这里就是一个copy然后检查buffer是否包含'-'字符,如果不包含返回-1然后返回0,驱动加载失败 单独保存user以及key 检查key是否合法并返回 使用username计算出key然后与之前的对比是否相同,成功返回1驱动返回成功他这里其实已经是keygen了 keygen 去混淆 验证一下
PsCreateSystemThreadEx函数内PspCreateThread位置断点 修改系统函数PopIrpWorkerControl代码段,构造跳板,达到伪造线程入口 但是这个线程里面就一个KeDelayExecutionThread dump整块shellcode,sub_1180会一直调用,这个函数是没有vm的堆栈可以看到Process Name 以及Path Name 往上发现大概这样 shellcode调用系统函数大致流程为endecrptFunc ^ 0xACACACACACACACAC得到跳板地址
跳板地址拷贝原系统函数头部字节 计算保存字节数 push返回地址retpush valueMov [rsp+4],ValueRet于是看了下标签 遍历Pool找出所有带有push mov rsp的地址保存下来 然后看了下部分调用的APIMmCopyVirtualMemory以及MmCopyMemory都没用调用结合它一直在判断进程,那么可能是在等待一个进程回到前面跟了判断的参数下访问断点没多远就能看到进程名GameSec.exe 创建一个进程名一样的启动后PsGetProcessPeb就会断下 之后就是MmCopyVirtualMemory 最后一直在读PEB+0xACE
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法