mscorjit的介绍,兼对某壳企业版的分析

简介: 在前面介绍mscorwks的时提到了,.net的程序是以函数为单位编译。而在 mscorjit中提供了一个函数 compileMethod 。mscorwks就是通过调用这个函数来编译.Net方法的。对于EE层,或者虚拟机预处理层的加密壳,只需要hook这个函数就可以dump出方法体的代码了。

在前面介绍mscorwks的时提到了,.net的程序是以函数为单位编译。而在 mscorjit中提供了一个函数
compileMethod 。mscorwks就是通过调用这个函数来编译.Net方法的。
对于EE层,或者虚拟机预处理层的加密壳,只需要hook这个函数就可以dump出方法体的代码了。
需要注意一点,这个函数是 thiscall 调用约定的。

.Net方法体进入 compileMethod  之后是怎么样的处理流程呢?

限于篇幅,这里只能简单介绍一下,具体详情可以参考 sscli 2.0的源代码。
compileMethod 实际上只是一个接口函数,它没有做实际什么工作,
只是简单的 调用另一个函数:jitNativeCode。

在jitNativeCode 函数是一个线程安全的函数,在它里面实际上只是做了一些准备工作。
安装异常处理,然后实例化一个Complier对象。初始化Complier类,再调用
这个类的一个成员函数 compCompile 。

在 compCompile 就开始了实际的编译工作。

所以hook jit来实现脱壳的话,我们有三个选项:
 hook compileMethod  (thiscall)
 hook jitNativeCode (fastcall)
 hook compCompile (thiscall)

对于这三个方案 实现脱壳是完全一样的。在这三个函数里面我们都能够获取到脱壳所需要的结构体。
实际上脱壳需要的结构体是 CORINFO_METHOD_STRUCT,CORINFO_MODULE_STRUCT,CORINFO_METHOD_INFO这三个。

我在脱某壳个人版加密的程序时是采用的方法2,hook jitNativeCode 函数。
hook方法:采用的替换方式,即直接修改 compileMethod  函数,将 call jitNativeCode 改为 call myhook。
在 myhook函数里面处理脱壳工作,然后再调用 call jitNativeCode 。

实际上有一个技巧。一般我们通过反射invoke让一个方法体进入jit处理过程的,然后在 myhook 里面截取dump方法体。
假设我们在dump一个 Exit函数时,如果让它执行了会导致进程退出,因为invoke会执行方法,而我们需要的只是让方法体进入
jit处理过程,以方法dump,而不希望这个方法被执行。所以我们可以不用回调 jitNativeCode 函数,直接返回一个nop地址。

maxtocode 2007企业版具称是虚拟机处理层的壳,那它在虚拟机处理层做了什么工作呢?
具分析 mscorjit.dll 的内存镜像,它实际上做了和 jit层脱壳 差不多的工作,
同时使用了 方案2 和 方案 3. 显然它hook jit的目的不是脱壳,而是实现 方法体的还原。

我们可以很容易确定 在程序运行到 compCompile 中后,加密壳的运行库已经完成了所有解密工作,
因此在 compCompile 函数里面,或者它下级的函数里面是脱壳的好时机。

如是我修改了一下jithook程序,只改了hook位置,即hook compCompile 的下级函数。
然后测试dump。效果如下:

可以dump出源代码。
看来企业版相对个人版来说只是hook位置的变化,对于脱壳来说,基本上没有增加任何难度,
我们也只需要更改一下hook位置,就可以dump了。

另外发现企业版运行库的一个bug,可以用简单的方法脱壳。

相关文章
MySQL · 特性分析 · 企业版特性一览
背景 MySQL 企业版由 Oracle 公司维护,当然也是收费的。其产品类别也基本和 Oracle 数据库一致,包括标准版、企业版、集群版等。标准版包括基本的特性,价格也会比企业版便宜很多。今天和小编一起来看下 MySQL Enterprise Edition 提供的一些功能,这些功能的源码当然
3660 0
MongoDB 2.4企业版分析
MongoDB v2.4版于3月19日发布,它引入了内置的文本搜索功能,以及基于哈希的分片和众所期盼的安全特性。同时,10gen公司发布了MongoDB的企业版,它在开源版的基础上增加了安全和监控的特性,易于与其它企业软件相集成。
718 0
MongoDB 2.4企业版分析
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/8696831 MongoDB 2.4企业版分析 作者:chszs,转载需注明。
774 0
阿里云飞天企业版获【可信云·容器平台安全能力】先进级认证
阿里云飞天企业版容器系列产品获中国信息通信研究院【可信云·容器平台安全能力】先进级认证,这是飞天企业版容器产品获得《等保四级PaaS平台》和《 云原生安全配置基线规范V2.0》之后,本年度再一次获得行业权威认可,证明飞天企业版的容器解决方案具备符合行业标准的最高等级容器安全能力。
206 8
阿里云飞天企业版获【可信云·容器平台安全能力】先进级认证
十年同行,阿里云飞天企业版支持中国企业扎根全球
今天,在阿里云主办的「2025中企出海大会」上,阿里云飞天企业版(Apsara Stack)正式发布最新国际化产品与服务能力,全面助力中企出海和国际市场。阿里云专有云应急服务负责人张淑芬在大会发表“飞天企业版-本地化专有云计算服务”主题演讲,深入解读飞天企业版面向中企出海的三大核心产品解决方案,以及阿里云在全球化部署与生态合作方面的实践成果与战略布局。
160 1
首批!阿里云飞天企业版率先通过中国信通院一云多算能力评估
首批!阿里云飞天企业版率先通过中国信通院一云多算能力评估
又稳又快!阿里云飞天企业版支撑多家政企云上部署DeepSeek和通义千问
又稳又快!阿里云飞天企业版支撑多家政企云上部署DeepSeek和通义千问
云市场伙伴动态 | 观测云赋能「阿里云飞天企业版」,打造全方位监控观测解决方案
云市场伙伴动态 | 观测云赋能「阿里云飞天企业版」,打造全方位监控观测解决方案
又稳又快!阿里云飞天企业版支撑多家政企云上部署DeepSeek和通义千问
从“技术尝鲜”到“生产力工具”,这类业务场景并非孤例,在过去的一个月间,超20家政企单位基于阿里云飞天企业版,实现了主流大模型的“又快又稳”部署,涉及政务、金融、能源、文化传媒等多个行业领域,加速应用创新。
185 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问