此文章仅记录当时思路,不具备通用性。且本人所学甚浅,必有诸多不足,如若有误或更好的思路,希望能不吝指教。
目标需求
目标程序有防多开限制,需求绕过防多开。
初步分析
通过行为监控、分析,发现目标程序有可疑文件(某特殊文件后缀)的创建和锁文件(LockFile)的操作。
进一步分析,发现与锁文件的操作无关。
关注并分析创建的可疑文件:发现该文件在程序启动时被创建并占用,程序退出时删除,且处于公共目录下(C:\user\pubulic\…)
所遇问题
尝试通过相关API断点下断分析,但此程序创建文件诸多,断点触发频繁,需进一步过滤,遂尝试条件断点。
分析特征
在触发文件API(CreateFile)断点时,寄存器【RCX】存储的是文件的完整路径,可以通过参数比较来过滤无用的断点触发。
初步解决方案
构建条件断点:bp kernelbase!CreateFileW "j(poi(@rcx)='【文件路径】') '命令1' ;‘命令2’"
尝试执行命令,无法触发,遂分析:
1.CreateFileW
为宽字符版,自己输入的文件路径不知被解析为什么样式
2.poi()
解析ÿ