破解NET的四大神器(转)

原文地址

原本这篇文章可以更早一星期写出来与大家分享,由于某方面的原因耽搁到现在,心里竟有那么一点好像对不住大家的感觉。这当然与神器有关,因为我发现利用这四大神器我似乎觉得几乎所有的NET程序破解都不在话下了。而我竟然在发现这神器组合后推迟了一周才分享与大家!

在开始分享之前,还是要说明一点,说是神器到目前为止也仅仅是对我自己而言,至于这四大神器会不会成为对各位而言的神器就不得而言了,因此当有哪位亲拿到这四大神器后仍然感到破解NET程序存在很大困难,请拍砖。

先介绍一下我眼中的四大神器:De4Dot、Reflector、Reflexil以及DILE.其中

De4Dot是一个开源的脱壳/反混淆工具,结识到神器工具我要感谢论坛里的朋友wan,他在我的处女新手贴” [原创]新手破解.NET程序”中提到了这个工具,而这款工具被我奉为了神器级工具。因为它的脱壳能力的确很强,使用它我成功地脱掉了Dotfuscator、MaxToCode处理过的程序,至于其它的加壳/反混淆工具比如说Xenocode、ThemIDA等我还没有进行过实验,之后我将计划研究各类加壳/反混淆工具的脱壳方法,我深信De4Dot能够给我带来巨大帮助。(由于De4Dot是开源的,我相信即便De4Dot暂时处理不了的壳通过扩展其功能必将能解决)

Reflector这个功能强大的NET反编译工具相信大家都是很熟悉的,这个工具是我在没有开始学破解之前(大概6个月之前我才开始涉足破解逆向领域)唯一熟知的破解方面的工具。而现在的Reflector的功能更加强大了,不仅仅其自身的功能在增强,而且其强大的插件系统也扩充了其功能,下面提到的Reflexil便是它其中的一个插件。

Reflexil是Reflector中的一个插件,也是开源的,它可以从IL和C#高级语言两个层次对目标程序的代码进行修改/注入。认识到这个工具无疑使我十分震惊,因为在我开始学NET破解的时候经常担心不能像在OD里那样直接修改汇编代码一样来通过修改IL或C#代码来改变NET程序的流程逻辑,如果是这样子那么我学习NET破解的方法将受到极大地限制。而Reflexil的存在完全消除了我这方面的担忧,即便在某些地方不能从C#对目标程序进行修改,那么我总可以在IL代码级别上来修改!

DILE则是一款调试工具,全称Dotnet IL Editor,尽管现在它还没有完全开源但相信在不久的将来也将会在sf上开源。其实一开始我并不想把它放入我的神器之列。有两方面的原因:第一是我比较擅长也倾向于静态分析,能够静态分析完成的我几乎不会去用动态调试法,看过我的处女贴的朋友应该可以看出来我破解的第一款软件中根本就没有用到调试工具;第二尽管静态分析是我的强项,但这并不意味着我不需要一款调试工具,如果大家百度或者Google一下会发现有很多文章在讲Reflexil与Deblector并称他们为神器,而Deblector就是Reflector下的一个调试工具,所以一开始我很希望将Deblector作为我调试方面的神器工具,但是我最终没能把这个工具使用起来,网上的文章都在讲Deblector启动开始调试之后会断在程序的入口处,但我下载了它的几个版本,都没有达到这个效果,它并没有在入口处断下来,而是嗖嗖地直接弹出了程序的主界面。

光说不练,很难让人相信这可以作为神器工具的强大之处,下面就以我实际破解案例来展示一下这四大神器的威力。

要破解的这款软件的是青鸟QQ群发大师,其软件组成如下截图:

首先,在Reflector里查看一下其中的exe文件,看是否有混淆或者加壳。

<ignore_js_op>

青鸟QQ群发大师.exe:

<ignore_js_op>

青鸟qq群发大师陌生人群发.exe:

<ignore_js_op>

SoftPlatorm.exe:

<ignore_js_op>

从上面的反编译结果可以得知前两个exe是没有加壳的,可以很清晰地看到他们的C#代码,并且可以得知他们只是两种不同功能的启动程序,用来启动SoftPlatform程序,因此这次破解的程序入口就可以直接放在了SoftPlatform里面了。

但SoftPlatform是加过壳的,因此需要脱壳,接下来De4Dot就上场了。

De4Dot是命令行工具,所以需要各位熟悉如何使用命令行。在命令行打开之后,对于一般的程序直接输入以下命令: De4Dot 目标程序全路径 便可以脱壳完成,对SoftPlatform.exe我们也这样试一下:

<ignore_js_op>

嗯?好像没有奏效,尽管生成了一个SoftPlatform-cleaned.exe,但是如果用Reflector查看的话,这个程序仍然是加壳。再仔细查看提示,便会发现原来他加了2层壳,根据他的提示可以将其一层一层的脱掉,如下所示:(顺序不能错只能先-p mc,再-p df)

<ignore_js_op>

将最终的文件命名回SoftPlatform.exe,再用Reflector反汇编一下看:

<ignore_js_op>

啊哈哈,看,是不是很爽!所有的代码都被反编译为C#的代码了,而且可读性也很强,接下来就是去找这款软件相关的用户验证的地方了。

很容易找到,其验证的类为SoftLogin,但是在查看他的代码的时候出现了点小问题,无法查看到,这是因为SoftPlatform.exe所引用的dll中有许多个也是被加了壳的:(下图红色感叹号的)

<ignore_js_op>

这个也比较容易解决,De4Dot嘛,使用跟脱SoftPlatform同样的方法,可以非常顺利地脱掉它们的壳,这时再查看SoftLogin类会看到如下关键代码:(在SoftLogin.method_2方法中)

<ignore_js_op>

根据代码的含义很容易得知WebQQ.Key.KUserGrade表示用户的等级,WebQQ.Key.KExpireTime为过期时间,由于该软件的验证为网络验证所以整个验证过程也还有其他的处理,因为这里只是举个例子来说明一下工具的强大,因此我们只讲述一下把用户等级变为最高级别,过期时间延长的方法。

另外根据上面的那段代码可以看出在网络验证返回来的数据很大一部分都作为了GClass1的函数参数(实际上这些函数大部分都是些类似get/set方法),所以我们可以估计GClass1跟验证会有相当大的关系

继续阅读GClass1的代码可以找到如下两个方法:

<ignore_js_op>

呵呵,再一次的啊哈哈,极度明显地可以看出smethod_14就是返回过期时间,而smethod_35则返回的是用户级别!

知道怎么做了吗,我问我知道怎么做了吗,哈哈,轮到Reflexil上场了,使用它将这两个函数的返回值改掉!改之后的效果如下:(如何使用Reflexil修改IL代码及C#代码请大家百度搜索Reflexil会出现一篇介绍神器Reflexil与Deblector的文章里面有讲,这里不再赘述)

<ignore_js_op>

哈哈,过期时间总是当前时间+10000天也就是说永不过期,用户等级为2是至尊vip版,当然这个值代表至尊vip还是要去分析其他的代码才能得知。

案例分析就到此结束吧,要最终破解这个程序仅靠改这两个地方远远不够的,还有许多其他地方也要修正,限于篇幅这里就不再赘述了。

案例是讲完了,但是DILE貌似并没有使用到,是的整个破解过程我没有使用它,经过脱壳之后使用Refletor都能看到源代码级别的东西了,而且我擅长C#编程,静态分析代码对我来讲不在话下,因此DILE没有使用到。那为什么我还要将它列入神器之列呢,这是因为不管是自己写程序还是学习别人的程序在某些情况下调试工具仍然必须要用到,因此选一款调试工具对我来讲也是十分必要的。尽管DILE破解中没有用到,但后来破解完成之后我还是试验了一下它是否可以被我使用起来,至于怎么使用这里不再论述,只作个截图展示一下,以后破解中需要用到调试技巧试再作讲解。

以上都是个人破解中的一些经验之谈,分享与大家,希望能对大家有所帮助,如果有什么不当之处望大家尽情拍砖。

分类: .Net

时间: 2024-10-21 05:33:02

破解NET的四大神器(转)的相关文章

让程序猿不再苦逼的四大神器

做程序猿「媛」是一个苦逼的活,大周六地早起在技术群里招呼.看到没有啥人响应,说了一句.「预计都没有醒」.然后一位哥们抛过来,「在加班」 ! 做 Web 开发更是一个苦逼的活.不像是做 iOS,搞定client.基本上就万事大吉了. 做 Web 开发不仅仅是要做后端.前端也须要了解和熟悉! 做前后端通吃的 DevOps 全栈project师绝对是最苦逼的活,不但须要做开发,而且还要了解运维.优化.不会运维的project师绝对不是一个好架构师. 但所幸的事.一个优秀的project师虽然非常忙,虽

四大神器之反射(二)

利用反射来操纵数组 import java.lang.reflect.Array; /** * * 利用反射来操纵数组 */ public class ArrayTester { public static void main(String[] args) throws ClassNotFoundException { Class classType = Class.forName("java.lang.String"); Object array = Array.newInstanc

四大神器之反射

Java反射机制,是一个基础的内容章节,在对于之后的框架学习中起到了至关重要的作用,现在比较流行的是spring 框架 ,其中的IOC(自动注入)以及AOP(动态代理),在AOC中代理模式又分为动态代理和byteCode instrument(插桩)或者是CGLIB . 在学习Java反射机制前,首先问一个问题:在Java运行时,对于任意一个类,能否知道这个类有那些属性和方法?对 于任意一个对象,能否调用它任意一个方法? 答案是肯定的.可以! 在这里要去区别一个事情:如果说在自己写的类中去改一个

软件清单

IT生涯, 我的常用软件清单 IT生涯, 我的常用软件清单 SkySeraph Jan. 26th 2017 Email:[email protected] 更多精彩请直接访问SkySeraph个人站点:www.skyseraph.com About 前两天把系统给重装了下,好像最近一次安装应该是两年前了,一般情况下不愿意再做此类耗时无聊的事情,但没法,拥有SSD和高配置内存,开几个IDE却卡成翔,系统分析折腾了老半天还是决定重装了,重装后的那个清爽真是无与伦比, 至少依旧可以在我的Win 10

IT生涯, 我的常用软件清单

IT生涯, 我的常用软件清单 SkySeraph Jan. 26th 2017 Email:[email protected] 更多精彩请直接访问SkySeraph个人站点:www.skyseraph.com About 前两天把系统给重装了下,好像最近一次安装应该是两年前了,一般情况下不愿意再做此类耗时无聊的事情,但没法,拥有SSD和高配置内存,开几个IDE却卡成翔,系统分析折腾了老半天还是决定重装了,重装后的那个清爽真是无与伦比, 至少依旧可以在我的Win 10上折腾不用开发也搬迁到MacB

net程序破解神器

本帖最后由 Pnmker 于 2012-12-2 05:19 编辑 原本这篇文章可以更早一星期写出来与大家分享,由于某方面的原因耽搁到现在,心里竟有那么一点好像对不住大家的感觉.这当然与神器有关,因为我发现利用这 四大神器我似乎觉得几乎所有的NET程序破解都不在话下了.而我竟然在发现这神器组合后推迟了一周才分享与大家! 在开始分享之前,还是要说明一点,说是神器到目前为止也仅仅是对我自己而言,至于这四大神器会不会成为对各位而言的神器就不得而言了,因此当有哪位亲拿到这四大神器后仍然感到破解NET程序

.net 逆向工具

做xdctf的时候,遇到一个.net逆向,自己根本没学过.net,用reflector打开后直接看不懂,放弃. 现在看了下writeup,知道了之所以看不懂是因为加壳了.所以,下意识了解下.net下应用程序的逆向的基础工具.在这里将一篇文章中讲的东西粘贴过来,记录一下. 转自:http://www.52pojie.cn/thread-174802-1-1.html 先介绍一下我眼中的四大神器:De4Dot.Reflector.Reflexil以及DILE.其中 De4Dot是一个开源的脱壳/反混

V2EX 上收藏Top200

截止到目前 V2EX 上收藏人数最多的 56 个帖子 收藏数 Top200 截止到目前V2EX上收藏人数最多的56个帖子 说说自己知道的各个领域水平比较不错的论坛 发一个自用了一年多的加密代理工具 shadowsocks 我的FQ路由完全手册 玩 Python 之必装组件 程序员如何自食其力,肉身FQ? [讨论] 除了 V2EX,你们还常逛那些网站呢? 硬盘女神 推荐我们在 Github 上已经被 star 了过千次的简历模板和在线 MarkDown 简历工具给大家 每个人都来推荐一款棒的mac

移动端页面性能探究

一.背景: 智能终端的普及改变了人们对互联网的使用习惯,终端环境对页面性能有更高的要求,接下来以一张图来分析:1s内渲染一个移动页面 网络整体消耗来分析: 1.服务器响应应该小于200ms 2.尽量少的重定向 3.尽量少的第一次渲染的请求 4.避免过多堵塞的js和css堵塞 js执行效率和渲染效率: 1.给浏览器留的200ms渲染时间 2.优化我们的js执行效率和渲染时间 二.主要的web性能优化 页面请求:DNS Lookup.减少重定向.并行请求.压缩.缓存.按需加载.前端模块化 运行环境: