NET程序已经红红火火的兴起,就象LINUX一样势不可挡的涌来。作为一名Cracker,你会选择躲避吗?嘿嘿,对俺而言,挑战更富有趣味。

破解好几个.NET的程序了,一直想写出来,只是时间问题,所以拖到现在,怕再不写,就忘的一干二净了;)…….

一、兵器

公欲善其事,必先励其器。在静态下反编译NET程序我选择Reflector,Xenocode Fox 2006 Evaluation。他们的下载地址分别如下:

Reflector: http://www.aisto.com/roeder/dotnet/

Xenocode:http://www.xenocode.com/Products/Fox/Community.aspx

二、破解目标:Xenocode Fox 2006 Evaluation 14天使用限制

二、破解流程

很多人都介绍过静态分析破解.NET的程序,所以如果你已经是老手或者下面的部分刚好是你所不屑一看的部分,请退出J。

之因为破解这个程序,是在论坛里henryouly曾“【推荐】两个.NET IL的相关工具”,试用了一下Xenocode Fox 2006 Evaluation,效果确实很不错,程序有点类似Reflector,只是多了一点我认为比较好的功能:直接显示代码在程序体中的位置。Reflector是完全免费的,但Xenocode Fox 2006 Evaluation却有14天的限制,过了14天想使用就需要调整计算机的日期了,而且老版本的Reflector还无法反编译Xenocode Fox 2006 Evaluation。以己之矛,克己之盾,唉,军中大忌呀。

启动Xenocode Fox 2006 Evaluation的主程序FOX.EXE,在没过期的时候很容易就启动了;把时间向后调整1个月,FOX.EXE启动就提示14天的测试期到了,然后就退出了。

用新版本的.NET Reflector, Version 4.2.36.0打开Xenocode Fox 2006 Evaluation主程序,发现程序代码已经被混淆过,看不出什么名堂了,就是有一点的有名函数,对我们来说也没什么太大作用了;搜索关键字串14-day,也找不到。过期如下

在Reflector里用鼠标右键点程序FOX的名字,在出现的菜单里有一个选项“Go To Entry Point”,嘿嘿,看到了吗?

在这个菜单上点一下,我们被动局面立刻就被扭转了:我们直接来到了程序的入口代码处!按我们的推测,程序启动就判断了时间,验证是是不是过期了,没过期就启动,否则就出现过期的提示框,然后退出。那么在入口代码处,我们一段段代码的过,一定可以找到时间比较过程等。入口处函数代码如下图:

在xc447809891322395函数上双击,出现函数代码一如下(C#)显示:[STAThread]private static voidxc447809891322395(){ if (!x867eb3246b182488._c7c43f12e732db09()) ;行1 { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new x3e4e23fadc83a77e()); }}

看到上面的入口代码,你不觉得行1可疑吗?进入程序就调用了一个函数,然后判断的结果影响后面的所有代码的执行,嘿嘿,我们点击上面的_c7c43f12e732db09()进入,看到代码段二如下:

public static bool _c7c43f12e732db09()
{
if (x71a0073930f50f3f.xb30f5e1eb4806151("XFTRL" + x77fa6322561797a0.x9c1c eef9a932f141, new TimeSpan(x867eb3246b182488.x7ee7e0aa39016337, 0, 0, 0, 0)))
{
MessageBox.Show(MessageTable.TrialExpired, x77fa6322561797a0.x6886d5a186 7d55cb);
return false;
}
return false; 

看到什么了?如果你学的外语是英语,一定可以看出来在.IF语句里的TimeSpan、TrialExpired
是什么意思了,而且还带着MessageBox,哎,是不是来的有点太容易了,J。上面语句中进入就用那
些参数进行了时间比较,然后不过期的话,返回FALSE;过期返回TRUE。 
看来修改返回的TRUE和FALSE测试一下,就知道我们上面的判断的正确与否了,就是让返回的都是
FALSE,程序不就认为是在使用期限内吗?如何修改?有很多前辈高人讲了很多办法,比如直接用
ILDASM反汇编出来,然后修改语句,再用ILASM编译回去等等。我对他们的方法一直操作的不好,
所以我用懒人的办法。
你想知道吗?呵呵,let us go! 
把上面代码段二切换为IL格式,如下代码段三:
L_0033: pop L_0034: ldc.i4.1 L_0035: ret L_0036: ldc.i4.0 L_0037: ret 
所对应的机器码就是26 17 2A 16 2A ,而我们想修改上面的L_0034: ldc.i4.1变成L_
0034: ldc.i4.0 就可以了。我用HEXWORKSHOP打开FOX.EXE,然后查找上面的HEX代码,
找到后,修改17为16,就可以了。这里会有个问题:如果在程序中查找出来好几个地方都一样,
你如何修改?
这就是我看中Xenocode Fox 2006 Evaluation的地方,它可以直接告诉你函数的入口在
BODY中的地址,而且告诉你这个函数一共占有多少个字节。如下图:   
用HexWorkShop打开FOX.EXE,然后直接定位到文件的111D88处,然后向下看我们的
26 17 2A 16 2A,或者找111D88处的偏移,111D88+34=111DBC,怎么样?修改吧,
还等什么,记得修改完后保存。  
启动FOX看看效果,嘿嘿,已经在过期的情况也使用了,只是过期提示还存在,让人觉得难受。 去掉提示框:①修改代码L_0022: brfalse.s L_0036 这里,改为直接跳转到L_0036②或 者把Messagebox函数屏蔽掉,都可以去掉过期提示。我开始用方法1修改,发现程序运行就出错,

原来是牵扯到OPCODE语句执行后有堆栈平衡的问题,看来不熟悉也不行。我最终选择使用 方法2修改,启动Hexworkshop,把L_0024~ L_0033间的语句全替换为NOP,在IL语言中就是 00,然后保存退出。

再启动,世界清净了,嘿嘿,里面的EVALUTE 就修改成PRO好了,嘿嘿,顺手牵牛…….

NET程序的破解--静态分析(Xenocode Fox 2006 Evaluation)的更多相关文章

  1. 分析Android程序之破解第一个程序

    破解Android程序通常的方法是将apk文件利用ApkTool反编译,生成Smali格式的反汇编代码,然后阅读Smali文件的代码来理解程序的运行机制,找到程序的突破口进行修改,最后使用ApkToo ...

  2. ArcGIS 10 安装程序及破解文件

    1.下载 ArcGIS 10 安装程序及破解文件 后面提供电驴的下载地址(可以使用迅雷.QQ旋风等下载工具下载),下载文件是一个光盘镜像文件:‍ArcGIS_Desktop10_122519.iso. ...

  3. C语言写的流氓关机程序及破解

    记得大二刚开始接触电脑的那个时候,偶尔会弹出一个强制关机的窗口,当时没有办法,如下: 现在看来只是一个小程序而已,用C语言编写的: #include<windows.h> int main ...

  4. 用ildasm和ilasm对.net下的exe程序进行破解初探

    1.对ildasm和ilasm的解释和用法在msdn上有. ildasm:MSIL 反汇编程序是 MSIL 汇编程序 (Ilasm.exe) 的伙伴工具. Ildasm.exe 采用包含 Micros ...

  5. VB的程序如何破解

    VB的程序,不会告诉你这个VB写的,但是从界面来看就很像VB,一般是单文件的EXE,然后软件还比较小(早期的傻瓜式软件写的东西)   比如说我们想要知道这个"手动采集"按钮干了什么 ...

  6. OD 实验(十一) - 对一个程序的破解

    程序: 点击安装程序 这是一个拼图程序 点击 Options -> Flash Sizes 程序会提示是未注册版本 点击一些选项的时候会提示该程序只给注册的用户 点击 Register 随便输入 ...

  7. OD 实验(九) - 对一个程序的破解

    程序: 运行程序 点击 About 这是要注册的 点击 Register 输入邮箱和注册码,点击 Register Now 逆向: 用 OD 打开程序 右键 -> 查找 -> 所有参考文本 ...

  8. OD 实验(七) - 对一个程序的破解和去广告

    程序: 这里有很多的动态链接库 双击运行程序 这个程序有次数限制 按钮也在隐藏处 主界面 退出程序,会弹出一个广告 目的: 让程序的使用次数不受限制,且没有显示次数的窗口 去除程序关闭时候的广告 逆向 ...

  9. OD 实验(六) - 对一个程序的破解

    程序: 双击进行安装,安装过程默认就好了 安装完成 运行程序 输入 User 为 sch01ar,点击 Create 点击 Log In 这里显示为未注册版本 看看未注册版本有哪些功能被限制 这里会显 ...

随机推荐

  1. .gitignore的使用:首次创建及事后添加无法生效.

    问题:使用sourceTree做版本管理后, Xcode工程每次打开, 都会有几个xcodeworkspace之类的文件提示改动了. 如果想ignore掉, 有两种情况: 1:整个工程没有纳入版本管理 ...

  2. 一天一个Java基础——反射

    1.概念 反射主要是指程序可以访问,检测和修改它本身的状态或行为的一种能力 Java中的反射是一种强大的工具,它能够创建灵活的代码,这些代码可以运行时装配,无须在组件之间进行链接 反射允许在编写与执行 ...

  3. mysql 外连接总结

    内连接: 只连接匹配的行左外连接: 包含左边表的全部行(不管右边的表中是否存在与它们匹配的行),以及右边表中全部匹配的行右外连接: 包含右边表的全部行(不管左边的表中是否存在与它们匹配的行),以及左边 ...

  4. Asp.Net Core(.net内核)

    Asp.Net Core(.net内核) //----------------Day1----------------一章    Web基本原理 1节课程说明 web窗体--设计界面--加法使用Chr ...

  5. MySQL索引与优化策略

    1. MySQL索引实现 在MySQL中,索引属于存储引擎级别的概念,不同存储引擎对索引的实现方式是不同的,下面主要讨论MyISAM和InnoDB两个存储引擎的索引实现方式. MyISAM索引实现 M ...

  6. C++中引用的本质是什么?

    一般的教材上讲到引用时,都是说“引用是对象的一个别名”.我认为这种定义是不清晰的,不利于初学者理解引用.至少我自己曾经被这个定义困扰了一段时间.到底什么是“别名”? 实际上,引用的实质是位于xxxxx ...

  7. Windows 窗体最小化和隐藏的区别及恢复

    应用程序有托盘图标,窗体最小化或者隐藏窗体时,点击托盘图标需要恢复窗体显示,并且恢复之前的现实状体,正常大小或者最大化显示.例如:最大化显示窗体时,点击最小化按钮,窗体最小化,点击托盘图标将最大化显示 ...

  8. UVA 11600-Masud Rana(状压,概率dp)

    题意: 有n个节点的图,开始有一些边存在,现在每天任意选择两点连一条边(可能已经连过),求使整个图联通的期望天数. 分析: 由于开始图可以看做几个连通分量,想到了以前做的一个题,一个点代表一个集合(这 ...

  9. rfid门禁系统笔记

    非接触式IC卡性能简介 主要指标: 1:容量为8K 位的EEPROM 2:分为16个扇区,每个扇区为4块,每块16个直接,以块为存取单位 3:每个扇区有独立的一组密码和访问控制 4:每张卡具有唯一的序 ...

  10. SVM:从理论到OpenCV实践

    (转载请注明出处:http://blog.csdn.net/zhazhiqiang/ 未经允许请勿用于商业用途)   一.理论 参考网友的博客: (1)[理论]支持向量机1: Maximum Marg ...