简单破解.net(C#)程序
一直在用makedown2(free版),每当打开多个页面,就会提示升级为pro,还要注册码激活什么的。就有了破解的想法。以前也弄过一个小程序的破解,所以还算有些经验。
1. ildasm 用来将makedown2.exe转存为 il文件和res资源


2.修改il代码。通过分析得知新建文件、到处pdf和 自动保存都调用了 ValidateLicense 函数(返回值bool) 开来有重大嫌疑,试试直接返回true;
return true : 在il文件中如何表示呢!我用c# 写了个函数,用来提取return true代码
//000017:
//000018: static bool test(string str)
//000019: {
//000020: if (str.Length > 0)
IL_0000: /* 02 | */ ldarg.
IL_0001: /* 6F | (0A)000011 */ callvirt instance int32 [mscorlib/**/]System.String/**/::get_Length() /* 0A000011 */
IL_0006: /* 16 | */ ldc.i4.
IL_0007: /* 31 | 02 */ ble.s IL_000b .line , : , ''
//000021: {
//000022: return true;
IL_0009: /* 17 | */ ldc.i4.1
IL_000a: /* 2A | */ ret .line , : , ''
//000023: }
//000024: else
//000025: {
//000026: return false;
IL_000b: /* 16 | */ ldc.i4.
IL_000c: /* 2A | */ ret
} // end of method Program::test .method /**/ public hidebysig specialname rtspecialname
instance void .ctor() cil managed
// SIG: 20 00 01
{
// Method begins at RVA 0x2069
// Code size 7 (0x7)
.maxstack
IL_0000: /* 02 | */ ldarg.
IL_0001: /* 28 | (0A)000012 */ call instance void [mscorlib/**/]System.Object/**/::.ctor() /* 0A000012 */
IL_0006: /* 2A | */ ret
} // end of method Program::.ctor
所以要将函数开头位置修改成红色字体代码这样就ok 了
.maxstack
.locals /*1100000B*/ init (class MarkdownPad2.Properties.Settings/**/ V_0,
class MarkdownPad2.Core.StartupHelper/**/ V_1,
valuetype MarkdownPad2.Core.StartupResult/**/ V_2,
string V_3,
string V_4,
string V_5,
valuetype [PresentationFramework/**/]System.Windows.MessageBoxResult/**/ V_6,
class MarkdownPad2.Licensing.UpgradeProWindow/*0200006A*/ V_7,
class MarkdownPad2.Licensing.UpgradeProWindow/*0200006A*/ V_8,
string[] V_9)
IL_0000: /* 17 | */ ldc.i4.1
IL_0001: /* 2A | */ ret
IL_0006: /* 73 | (06)000011 */ newobj instance void MarkdownPad2.Core.StartupHelper/**/::.ctor() /* 06000011 */
IL_000b: /* 0B | */ stloc.
直接修改了函数入口,进去就return true 了
保存好文件
3.利用ilasm.exe 将il文件重新编译为exe
使用资源管理器搜索ilasm.exe 一般在.net 框架目录下。在ilasm所在目录下打开cmd,输入以下代码。(自己根据自己的情况修改下)
ilasm /RESOURCE=C:\Users\xxx\Documents\makedown2.res C:\Users\xxx\Documents\makedown2.il
这样程序就编译成功了。
这样就解禁了很多功能。不过开始启动很慢,点击注册什么的还提示错误!
简单破解.net(C#)程序的更多相关文章
- 利用OD破解一个简单的C语言程序
最近在学习汇编(看的是王爽老师的<汇编语言(第三版)>),然后想尝试使用OD(Ollydbg)软件破解一个简单的C语言程序练练手. 环境: C语言编译环境:VC++6.0 系统:在Wind ...
- CrackMe的简单破解
[CrackMe的简单破解] 对于以下这样的输入账号和密码的窗口,我们可以猜测该程序使用最简单的机制实现,即用strmp来比较用户输入的密码和原始密码匹配.所以为了破解该程序,可以通过bp strmp ...
- 一个简单的P2P传输程序
写了一个简单的P2P传输程序,在P2P的圈子中传输文件,不过为了简便,这个程序没有真正的传输文件,只是简单的判断一下文件的位置在哪里.这个程序可以处理当有一个peer闪退的情况,在这种情况下,剩下的p ...
- 循序渐进做项目系列(2):最简单的C/S程序——消息异步调用与消息同步调用
上篇博客 循序渐进做项目系列(1):最简单的C/S程序——让服务器来做加法 实现了一个最简单的C/S程序,即让服务器来做加法.当时为了通俗易懂采用了消息异步调用的方式.今天我们要采用消息同步调用的方式 ...
- IOS开发之小实例--使用UIImagePickerController创建一个简单的相机应用程序
前言:本篇博文是本人阅读国外的IOS Programming Tutorial的一篇入门文章的学习过程总结,难度不大,因为是入门.主要是入门UIImagePickerController这个控制器,那 ...
- iOS开发UI篇—简单的浏览器查看程序
iOS开发UI篇—简单的浏览器查看程序 一.程序实现要求 1.要求 2. 界面分析 (1) 需要读取或修改属性的控件需要设置属性 序号标签 图片 图片描述 左边按钮 右边按钮 (2) 需要监听响应事件 ...
- iOS开发UI篇—使用嵌套模型完成的一个简单汽车图标展示程序
iOS开发UI篇—使用嵌套模型完成的一个简单汽车图标展示程序 一.plist文件和项目结构图 说明:这是一个嵌套模型的示例 二.代码示例: YYcarsgroup.h文件代码: // // YYcar ...
- C#--简单的串口通信程序
前几天做毕业设计,其中要用到串口和下位机进行通信,于是自己捣鼓了一个简单的串口通信程序. 在做通信之前要先弄一个SerialPort组件出来,当然也可以通过程序来创建.本次设计中采用的是拖的winfo ...
- 分析Android程序之破解第一个程序
破解Android程序通常的方法是将apk文件利用ApkTool反编译,生成Smali格式的反汇编代码,然后阅读Smali文件的代码来理解程序的运行机制,找到程序的突破口进行修改,最后使用ApkToo ...
- 一个简单的MDI示范程序(Delphi)
http://www.cnblogs.com/pchmonster/archive/2012/01/07/2316012.html 最为一个巩固之前有关窗体和对象的有关知识,下面就建立一个简单的MDI ...
随机推荐
- [CareerCup] 16.5 Semphore 信号旗
16.5 Suppose we have the following code:public class Foo { public Foo() { . . . } public void first( ...
- - dequeueReusableCellWithIdentifier:
与之对应的还有一个方法: - dequeueReusableCellWithIdentifier:forIndexPath: 1 > - dequeueReusableCellWithIdent ...
- Odoo 仓库调拨移动过程中 单位不允许错误的分析及解决方案
Odoo 仓库调拨过程中,有时候会碰见一下错误内容: The roundings of your Unit of Measures on the move vs. on the product do ...
- #1045 - Access denied for user 'root'@'localhost' (using password: NO)
解决办法 打开 phpmyadmin里的config.inc.php文件 $cfg['Servers'][$i][ 'host'] = 'localhost';$cfg['Servers'][$i][ ...
- 安装时遇到:正在尝试其它镜像。 http://mirrors.btte.net/centos/7.2.1511/extras/x86_64/repodata/repomd.xml: [Errno 14] curl#6 - "Could not resolve host: mirrors.btte.net; 未知的错误"
我出现这种错误是因为网络链接问题,因为我设置虚拟机网络链接为VmNET8,设置了nat模式,使得我本地机可以访问虚拟机的linux服务器.但是打开虚拟机的浏览器却不能上网了.所以现在我用xshell装 ...
- 解决jsp中文乱码问题
1. 先解决响应中的乱码 何为响应中的乱码?把页面中的"username"改成"用户名"你就知道了. 所谓响应中的乱码,就是显示页面上的乱码,因为页面数据是从服 ...
- 超文本引用href的几种用法
href="要跳转目标链接"; href="#";当前页面不跳转(返回顶部) href="###";当前页面不跳转(同时不回到顶部) hre ...
- readyState0 1 2 3 4..
0:请求未初始化(还没有调用 open()). 1:请求已经建立,但是还没有发送(还没有调用 send()). 2:请求已发送,正在处理中(通常现在可以从响应中获取内容头). 3:请求在处理中:通常响 ...
- redis 自启动
第一步: 在/etc/init.d/目录下建立一个名字为 redis 的启动脚本 cd /etc/init.d touch redis 然后在这个脚本中添加如下脚本 <注意修改自己的PIDFI ...
- mac os x 连不上android 手机
在系统关于中查询mac的usb的厂商ID 如id为0x2717 执行echo 0x2717 >> ~/.android/adb_usb.ini 即可