Vmprotect3.5.1 壹之型 — 暗月·宵之宫

admin 2022年3月15日14:08:53评论89 views字数 1052阅读3分30秒阅读模式

Vmprotect3.5.1 壹之型 — 暗月·宵之宫

本文为看雪论坛优秀文章

看雪论坛作者ID:冰鸡


在很久很久以前,神奇的nooby有了个天才的想法,通过修改themida的引擎,使其强制输出了没有混淆和加密的程序,很轻松的就分析完了外壳逻辑和vm的逻辑,盖亚。


Vmprotect3.5.1 壹之型 — 暗月·宵之宫


通过nooby的想法,我们也将vmp3.5.1的引擎进行了修改,使其强行输出了没有混淆和vm后的代码,便于我们分析外壳和handler的逻辑。


今天先来看看vmp的反调试原理,先将vmp配置成如下,避免其他功能的干扰。


Vmprotect3.5.1 壹之型 — 暗月·宵之宫

保护后得到了非常干净的程序。

Vmprotect3.5.1 壹之型 — 暗月·宵之宫

Vmprotect3.5.1 壹之型 — 暗月·宵之宫

如图,这时的入口不再是骇人的 push 0xXXXXXX / call xxxxxx,而是:
int start(){if ( (unsigned int)sub_4F4664() == 1 )return mainCRTStartup();  sub_4F44EC();return 0xDEADC0DE;}

sub_4F4664()是一个非常大的函数,vmp整个外壳的逻辑所在,内存保护,导入表保护,资源保护,压缩等等就是在这个函数中处理的。

第一步,先获取ntdll的版本信息。

Vmprotect3.5.1 壹之型 — 暗月·宵之宫

根据ntdll的版本初始化一些HardCode,后面会用到。

Vmprotect3.5.1 壹之型 — 暗月·宵之宫

接着我们直奔诸葛亮三轮车,vmp自己封装了一个从模块的导出表直接得到地址的函数,这种方式在shellcode中比较常见。

Vmprotect3.5.1 壹之型 — 暗月·宵之宫

比较完善,还还考虑了转发的情况。

Vmprotect3.5.1 壹之型 — 暗月·宵之宫

接着通过GetExportAddress和上面通过ntdll定位的syscall序号进行反调试检测。

Vmprotect3.5.1 壹之型 — 暗月·宵之宫

vmp分别通过了IsDebuggerPresent,CheckRemoteDebuggerPresent, NtQueryInformationProcess,以及ZwSetInformationThread进行用户态反调试,vmp在调用函数之前,会检测头部是不是0xCC,然后直接报错。

还有就是直接syscall直接调用比较有效。
 
Vmprotect3.5.1 壹之型 — 暗月·宵之宫

那么,剩下的贰之型·珠华弄月再说。




Vmprotect3.5.1 壹之型 — 暗月·宵之宫 


看雪ID:冰鸡

https://bbs.pediy.com/user-home-841912.htm

*本文由看雪论坛 冰鸡 原创,转载请注明来自看雪社区


Vmprotect3.5.1 壹之型 — 暗月·宵之宫

# 往期推荐

1.高级进程注入总结

2.通过某音Cronet模块学习Quic协议

3.特斯拉攻击案例解读:硬件逆向分析

4.Android strandhogg漏洞复现学习

5.某APP加固产品的深入分析

6.FartExt超进化之奇奇怪怪的新ROM工具MikRom



Vmprotect3.5.1 壹之型 — 暗月·宵之宫



Vmprotect3.5.1 壹之型 — 暗月·宵之宫

球分享

Vmprotect3.5.1 壹之型 — 暗月·宵之宫

球点赞

Vmprotect3.5.1 壹之型 — 暗月·宵之宫

球在看



Vmprotect3.5.1 壹之型 — 暗月·宵之宫

点击“阅读原文”,了解更多!

原文始发于微信公众号(看雪学苑):Vmprotect3.5.1 壹之型 — 暗月·宵之宫

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年3月15日14:08:53
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Vmprotect3.5.1 壹之型 — 暗月·宵之宫http://cn-sec.com/archives/829566.html

发表评论

匿名网友 填写信息