.net加壳软件CLISecure调试笔记(二)

CLI内核随记(2)

今天有空,继续调试上次的壳。该壳下载地址http://www.secureteam.net。上一次并没有深入壳的解密流程,而是看了下虚方法的定位。今天的重点是壳解密流程。壳安装后有一个GUI主程序,一个本地dll。调试的重点就是这个本地dll。

这次仍然下断点在它挂钩JIT的地方。怎样激活这个断点?只要运行一个还没有JIT的方法既可。便于重复,这里固定为显示关于窗口。F9运行后,我们中断在hook方法的入口处:

再看一下椎栈,椎顶的值0x79E9776F指向了mscorwks.dll中调用JIT的地方,而第二个0x790AF170则指向了JIT中调用compileMethod的地方,自然,一调用compileMethod就跳转到hook的代码中来了。

下面的一段代码是调用CEEInfo::getMethodModule判断是否是当前Module需要JIT。如果是,继续执行解密过程,如果不是,自然不需要解密了。

012B2A4C  |.  8B45 0C    mov eax,dword ptr ss:[ebp+C]
012B2A4F  |.  8B48 04    mov ecx,dword ptr ds:[eax+4]
012B2A52  |.  8B51 04    mov edx,dword ptr ds:[ecx+4]
012B2A55  |.  8B45 0C    mov eax,dword ptr ss:[ebp+C]
012B2A58  |.  8B48 04    mov ecx,dword ptr ds:[eax+4]
012B2A5B  |.  8B41 04    mov eax,dword ptr ds:[ecx+4]
012B2A5E  |.  8B4D 0C    mov ecx,dword ptr ss:[ebp+C]
012B2A61  |.  8D4401 04  lea eax,dword ptr ds:[ecx+eax+>
012B2A65  |.  8B4D 0C    mov ecx,dword ptr ss:[ebp+C]
012B2A68  |.  8B5411 04  mov edx,dword ptr ds:[ecx+edx+>
012B2A6C  |.  50         push eax
012B2A6D  |.  8B42 30    mov eax,dword ptr ds:[edx+30]
012B2A70  |.  FFD0       call eax;调用getMethodModule
012B2A72  |.  8945 F0    mov dword ptr ss:[ebp-10],eax
012B2A75  |.  8D4D F0    lea ecx,dword ptr ss:[ebp-10]
012B2A78  |.  51         push ecx
012B2A79  |.  8D55 F8    lea edx,dword ptr ss:[ebp-8]
012B2A7C  |.  52         push edx
012B2A7D  |.  8B8D 7CFFF>mov ecx,dword ptr ss:[ebp-84]
012B2A83  |.  E8 88FEFFF>call CliSec_1.012B2910
012B2A88  |.  8D45 98    lea eax,dword ptr ss:[ebp-68]
012B2A8B  |.  50         push eax
012B2A8C  |.  8B8D 7CFFF>mov ecx,dword ptr ss:[ebp-84]
012B2A92  |.  E8 89FAFFF>call CliSec_1.012B2520
012B2A97  |.  50         push eax
012B2A98  |.  8D4D F8    lea ecx,dword ptr ss:[ebp-8]
012B2A9B  |.  E8 80F7FFF>call CliSec_1.012B2220
012B2AA0  |.  0FB6C8     movzx ecx,al
012B2AA3  |.  85C9       test ecx,ecx
012B2AA5  |.  0F84 35020>je CliSec_1.012B2CE0;正常(需要解密)时这里不会跳

紧接着代码取方法的名称:

012B2AAB  |.  8D55 B4    lea edx,dword ptr ss:[ebp-4C]
012B2AAE  |.  52         push edx
012B2AAF  |.  8B45 10    mov eax,dword ptr ss:[ebp+10]
012B2AB2  |.  8B08       mov ecx,dword ptr ds:[eax]
012B2AB4  |.  51         push ecx
012B2AB5  |.  8B55 0C    mov edx,dword ptr ss:[ebp+C]
012B2AB8  |.  8B42 04    mov eax,dword ptr ds:[edx+4]
012B2ABB  |.  8B48 04    mov ecx,dword ptr ds:[eax+4]
012B2ABE  |.  8B55 0C    mov edx,dword ptr ss:[ebp+C]
012B2AC1  |.  8B42 04    mov eax,dword ptr ds:[edx+4]
012B2AC4  |.  8B50 04    mov edx,dword ptr ds:[eax+4]
012B2AC7  |.  8B45 0C    mov eax,dword ptr ss:[ebp+C]
012B2ACA  |.  8D5410 04  lea edx,dword ptr ds:[eax+edx+>
012B2ACE  |.  8B45 0C    mov eax,dword ptr ss:[ebp+C]
012B2AD1  |.  8B4C08 04  mov ecx,dword ptr ds:[eax+ecx+>
012B2AD5  |.  52         push edx
012B2AD6  |.  8B11       mov edx,dword ptr ds:[ecx]
012B2AD8  |.  FFD2       call edx    ;这里调用.text:7A0A2503 CEEInfo::getMethodName

时间: 2024-12-09 22:10:47

.net加壳软件CLISecure调试笔记(二)的相关文章

.net加壳软件CLISecure调试笔记(一)

共两篇,第一篇和壳本身的过程关系不大,主要是涉及了虚方法的内容,第二篇则详细调试了CLISecure的保护原理.在我的blog上名为CLR内核调试随记,因为是随记,所以文章中可能有不全面甚至错误的地方.找到错误的朋友请与偶联系.性急的兄弟请直接看第二篇. 本文章所调试壳为CLISecure,下载地址为http://www.secureteam.net/,最新版本为3.0,而我所调试的版本为2.5,所以可能与最新的壳有所不同. CLR内核随记(1) 把平时看到的一些东西记下来,没准以后用的上. 本

Java软件开发学习笔记(二)

笔记 1. 相关知识1.1 Java编程语言是从一开始就支持软件本地化的第一个编程语言. 所有的字符串都使用Unicode 1.2 要本地化的内容: 数字 123,456.78 英国 ; 123.456,78 德国 货币 日期 3/22/61 美国 ; 22.03.1961 德国 March 22,1961 ; 英文 22. Marz 1961 德语 ; 1961年3月22日 中文 时间 文本 -> 图形用户界面(集中以上情况) 1.3 Locale类 locale, 简单来说是指语言和区域进行

软件探索性测试 笔记二

测试十戒律: 1.你应该使用大量输入,来反复锤炼被测的应用程序 大规模的随机测试(自动化),而且有助于理解输入和输出的关系: 2.你应当贪图你的邻居的应用程序 3.你应当亲自寻找睿智的预言家 对应的输入是否有对应的输出,也就是测试基准是否清楚的了解特定输入和环境条件组合的情况: 尝试让测试基准自动化,也许做不到,但是这样思考你可以选择做更有效率的工作: 4.你不应该崇拜无法重现的失效 尽最大努力注意并记住(或记录下)对软件采取的动作次序,同时记住应用程序的响应: 考虑使用调试器之类能追踪动作和软

急!请教在哪里找到加密C#程序的加壳软件TMD或者VMP

问题描述 想对自己的Winform程序进行保护,网上说TMD和VMP的保护能力较强.请问在哪里下载最新版,如何使用. 解决方案 解决方案二:百度...百度...解决方案三:我想问一下大家,你们写的Winform程序给客户都不用加密的吗?谁拿到程序文件用reflector已处理代码都有了,还有什么秘密可言.几个月开发出来的程序一点保护都没有.解决方案四:那你用c++啊解决方案五:引用3楼shingoscar的回复: 那你用c++啊 难道用C#就不能保护了吗?解决方案六:打个比方就像是你吃方便面还在

用sixxpack给程序加壳之后,打开程序出现闪退是怎么回事?

问题描述 用sixxpack给程序加壳之后,打开程序出现闪退是怎么回事?还有什么好的加壳软件,求推荐 解决方案 解决方案二:没人?解决方案三: 解决方案四:我用.NETReactor加壳,解决方案五: 解决方案六:不过这个不是壳,只是为了混乱反编译的,加壳工具多,Xenocode都行

java-在linux(windos)系统下解析加壳的apk

问题描述 在linux(windos)系统下解析加壳的apk 最好纯java代码 不要依赖组件 比如aapt 我用过aapt windos还好 linux需要的依赖太多 解决方案 首先加壳的方法和代码都是从Jack_Jia的博客学习的. 详见:http://blog.csdn.net/jiazhijun/article/details/8678399 由于本人从c++开发直接跳到Android开发,没有对android进行系统的学习,看上面博客时还是有很多不理解的地方.本文把不理解的地方梳理一下

加密加壳-Foxpro的混淆器,有哪一位大侠可以阐述明确一点????

问题描述 Foxpro的混淆器,有哪一位大侠可以阐述明确一点???? 针对FOXPRO的加密加壳的问题,本人很想采用混淆器来解决一些问题,现在关键的问题,程序中含有联网络服务器数据库的句柄,这一点很让人头痛,如果用一个加密文件或加密字段来存这个句柄的关键内容,是可以不会直接写出来,但,如果破解高手用里面的程序照样读出这个内容,然后再赋到一个变量里,不是照样可以显示出来,根本是无法保密的,请教高手大虾们,给个清晰的思路!不胜感谢了!!! 解决方案 devmiao 苏小喵 Ds Rxr 不要客户端直

图片-vs2010软件在调试时无法定位程序输入点

问题描述 vs2010软件在调试时无法定位程序输入点 5C 解决方案 图片打不开了,你的程序是exe还是dll,dll要指定加载进程exe 解决方案二: 看下是不是bug模式 解决方案三: 看看启动项目 是不是当前项目

为Android的apk应用程序文件加壳以防止反编译的教程_Android

一.什么是加壳?加壳是在二进制的程序中植入一段代码,在运行的时候优先取得程序的控制权,做一些额外的工作.大多数病毒就是基于此原理. 二.加壳作用加壳的程序可以有效阻止对程序的反汇编分析,以达到它不可告人的目的.这种技术也常用来保护软件版权,防止被软件破解. 三.Android Dex文件加壳原理PC平台现在已存在大量的标准的加壳和解壳工具,但是Android作为新兴平台还未出现APK加壳工具.Android Dex文件大量使用引用给加壳带来了一定的难度,但是从理论上讲,Android APK加壳