Themida、Winlicense和Enigma三种软件脱壳方法思路总结

原创|其它|编辑:郝浩|2012-11-15 17:23:52.000|阅读 11718 次

概述:软件脱壳就是对软件加壳的逆操作。脱壳技术的进步促进、推动了加壳技术的发展,本文将三种脱壳技术做出对比,希望通过本文能让用户对脱壳有一定的了解,从而更好的保护自己的软件。

所谓软件脱壳就是对软件加壳的逆操作,亦就是把软件上存在的壳去掉。在上世纪90年代后期,加壳方式的软件保护与破解的优势经历了交替上升和此消彼长的过程。脱壳技术的进步促进、推动了加壳技术的发展,在这种外部环境的催生下,各种加壳脱壳的软件也如雨后春笋般出现。
在这里为大家介绍一下ThemidaWinlicenseEnigma三种具有代表性的软件脱壳的总结。

Themida:

Themida是一个强劲的保护系统, 专为了那些想保护自己的程式不被先进的反向工程和黑客软件破解的软件开发者而开发的Themida使用SecureEngine®的保护技术。它能够以最高的优先等级运行,这些保护技巧是从来都没在电脑防御技术领域出现过,使它最大程度地保护 任何程式 。Themida最主要的目的是遮盖所有的现行的软件保护技巧上的漏洞。
但是Themida破坏了程序的入口代码并用一段壳代码取代了它,根本模糊了OEP界线.要么脱壳不完全,要么进不了程序代码(菜鸟的肤浅认识).但Themida也暴露出了它自身的弱点,以下是Themida脱壳的思路:

首先我们先看看Themida的OEP:

从图中可以看出:

  1. 它对入口代码的破坏一般只有几十个字节,对一些固定模式的入口程序,如VC++,VB,Delphi等入口的发现和修复还是比较容易的.Themida对它不熟习的入口代码则脱壳后原样不变!这时,OEP就清晰了.
  2. 和所有的加壳软件一样,Themida也只能在现场获取API地址,经加密后再写入程序代码中.正确的API地址一定会在某个寄存器中瞬间出现,这就暴露了它加密的蛛丝马迹,捕获在themida代码中出现API地址的代码段就成为了脱壳的突破口..
  3. 任何程序运行完成后都会"返回到kernel32.7C816FD"(菜鸟的肤浅认识).因此当堆栈顶是"返回到kernel32.7C816FD"时,是从壳代码进入程序代码的重要标志

抓住以上三点作为突破口就可进行对Themida的脱壳。

Winlicense:

Winlicense的OEP小特征:

对于Winlicense2.1.0.10及其以下版本,不用license,可自己随意构造一个license直接bypass.然后脱壳。 bypass过程如下:

  1. 先获得license名称,自己随便构造一个license,然后OD运行程序,弹出提示窗口后获得JMP的首地址:FirstJmpAddress。
  2. 下FirstJmpAddress硬件断点,重新运行程序,中断后,在第二个jmp,enter进入,然后搜索cmp ecx,eax,下断点,运行,中断在CmpEcxEaxAddress。  
  3. 运行几次后,会得到eax,ecx不同的值,其中eax为正确的checkword,把eax值赋给ecx即可。共有两次不同,所以有两个checkword。  
  4. 搜索kenrel.dll的首地址,本机为7c800000, ctrl+B,输入:00 00 80 7C。再搜索dll地址的第二个地址,可以获得SecondDllAddress。在改完第二个checkword后,把SecondDllAddress更改为首个dll地址,运行即可bypass.

接下来就是Winlicense脱壳:

  • 把bypass的script插入zhw hwid Themida - Winlicense 1.x - 2.x Multi PRO Edition 1.2.txt中即可实现bypass加脱壳。
  • 搜索/*zhw bypass   */部分可看到插入的script.

Enigma:

  1. OEP查找:

    这种方法就不说了,各种编译器特征码,敏感API都可以实现,基本上Enigma都是通过jmp eax到达OEP的。

  2. bypass crc:

    在跟踪过程中,先把CRC给bypass了,这样下断或inline patch就会比较简单了。

  3. 修复IAT Redirection

    只要把以上灰色部分给NOP掉即可强制不使用IAT Redirection,跟踪方法一般是通过看IAT什么时候被Redirection来定位具体代码位置(通过搜索FF 25等方法)。

  4. 阻止API Emulation

    注意上面的TEST EDI,20的关键字,通常可以用来定位API Emulation。 把灰色部分NOP掉即可阻止API Emulation。

  5. Fix Data Relocation等根据实际情况修复即可。

总结:

通过这篇文章我相信大家对软件的脱壳技术的过程思路都有了大致的了解了,从软件加密的角度来说充分了解了脱壳的机制,那么你对软件加壳的技术一定会有更深入的了解,希望这篇文章能对大家在软件加密方面有所帮助。

 

 

 



标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果

登录 慧都网发表评论


暂无评论...

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
相关厂商
相关产品
Themida

Themida是先进的Windows软件保护系统

在线客服 在线QQ 电话咨询
400-700-1020
反馈
在线客服系统
live chat