技术资料

 当前位置:首页 - 技术资料 - 加密狗破解

NET手动来破解脱壳的技巧

2017.01.21

  在开始正文之前,我想明晰一下我对脱壳/反稠浊.NET程序所需求抵达的方针,应该说有两个:第一,拿到程序的完好源代码,C#或许MSIL,C#的最佳;第二,脱壳/反稠浊后的程序能够工作。对我来讲,第一个方针是极具振奋力的,能够拿到别人辛辛苦苦才完毕的程序的源代码关于一个从事软件开发的人来讲还有别的比这更让他激动吗,因此每当那些源代码总算完好无损地呈如今我的眼前的时分我都感到非常地满意。这也降低了破解程序的难度。第二个方针,对我来说是非有必要的,但有些时分也是有必要的,为何这么说呢?有些时分尽管拿到了源代码但假定脱壳/反稠浊往后的程序不能工作的话,关于需求爆破的程序来讲就是极为麻烦得工作,程序都无法工作如何爆破呢?

  接下来我还得烦琐一件工作,请不要嫌我烦琐,这也是一个极为重要的工作,由于在脱壳的过程中咱们或许不止一次地要用到。这件事就是关于程序数据在PE文件中的文件偏移与其在内存中的RVA之间的转换公式,这儿只列出公式,关于为何不阐明(包含文中涉及到任何跟PE文件格局有关的常识都不作阐明,假定要讲那真的是一个很大论题,这不是咱们这篇文章的目的),不懂得能够私底下评论或参看网上别的的阐明。这公式是:(公式中的"节"也称作"段",Section)

  数据的文件偏移 = (数据的内存RVA-数据地址节的RVA)+数据地址节的文件偏移

  下面能够开始正文了,这儿咱们以发我的程序为例,程序只需一个文件WindowsApplication1.exe。一个好的习气(当然仍是我以为的)就是拿到一个生疏程序往后首要要判定是哪种言语写的,判定所能运用的东西的大概计划,然后再查看该程序是不是加壳/反稠浊,假定是加壳/反稠浊往后是运用啥东西处理的。由于这些事前都现已通知了我,所以我直接就用De4Dot查验是不是能够脱壳/反稠浊,发现确实不能往后,仍是用DotNet Id确认了一下它的加壳/稠浊方法为TMD(Themida.NET简称,下同).然后,又运用各种Unpacker东西处理无果往后,参看网上一些材料将程序从内存Dump出来往后再修改的方法成功地完毕了该程序的脱壳并且脱壳往后的程序是可工作的。