上一节是获取了系统磁盘上系统还原点文件,成功解决了WMI和PowerShell无法获得系统还原点的问题,但是还原点多余的情况依然无法解决。这几天看了室友的《加密与解密 第三版》对逆向有了很浓厚的兴趣,练手就准备用这个程序。
系统还原点的程序是C:\Windows\System32\rstrui.exe
使用IDA和OD。
历时一周,终于有了头绪,rstrui.exe里面有一个类的静态函数(CSxFunctionTracer::CSxFunctionTracer()),感觉是用来打印日志的,每个函数里面都会调用该函数,并且写上调用函数的函数名。经过寻找,找到2个关键函数:
GetSystemId
_FilterRestorePointsBySystemId
根据函数名看出来是获得系统ID后,根据系统ID进行判断,看样子上一篇文章中获取的文件里应该是有系统ID的,现在只要能获取系统ID就OK了。
看了看GetSystemId的实现,代码量不多,看样子就是一个COM接口:
下图代码是调用COM接口的函数: