-
-
[原创]crackme第5题
-
发表于: 2017-6-10 16:26 3254
-
1. 因为题目中释放了驱动文件,所以首先,把驱动文件拿到,在od中对DeleteFile设置断点,在目录下取到驱动文件: vmxdrv.sys
2. 应用程序与驱动通信,在ida中查看应用程序的主要调用逻辑如下(对应地址为sub_401760):
上面的md5计算过程由peid检测后和调试分析得出,同时可见输入长度需要为6。
3. 调试发现程序被反调试检测到,然后退出,接着分析驱动代码,驱动代码放到ida静态分析即可,看到对进程信息的处理过程:
进一步调试需要对该处代码,屏蔽,但修改是需要注意驱动中存储了状态:
上面对0x222004的处理过程一定要在r3中调用过,但后面的反调试可以直接去掉,因此拖到16进制编辑器中修改,对anti_10486函数nop掉,然后存储(同时重新生成文件hash,否则驱动会加载失败):
此时,驱动已经拿到,并且去除了反调试,因此,可以进一步调试。
4. 在r3程序启动前,手动加载驱动文件,保证与原始文件名称相同:vmxdrv.sys ,目的是替换应用程序中的驱动的加载;此后配合od的插件可以调试分析程序;
5. 分析驱动调用流程:原理为应用层调用writefile,驱动根据输入计算md5,然后readfile取得md5值,应用层后续转换为文本,然后继续计算hash,该hash被截取(1,5)部分结果与目标值比较,对应的驱动代码:
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
赞赏
看原图
赞赏
雪币:
留言: