`
tianshibaijia
  • 浏览: 1122826 次
文章分类
社区版块
存档分类
最新评论

初次接触.NET程序的破解

 
阅读更多

初次接触.NET程序的破解 - BatchDate宝宝特别版 1.2.0.2

【破文标题】初次接触.NET程序的破解 - BatchDate宝宝特别版 1.2.0.2.
【破文作者】风球[PYG]
【作者主页】http://Bbs.ChinaPYG.Com
【破解日期】2009年02月07日
【破解工具】PEiD0.94、OllyDbg、Hex Workshop、Reflector、DotNet Helper
【原版下载】http://www.littletools.cn/
【软件简介】 BatchDate宝宝特别版 1.2.0.2. -照片日期文字添加器
“为了保证照片的完整性,现在的数码相机一般都不直接在照片上打印拍摄日期了,而是记录在照片的Exif信息中。即便是能够打印,也有很多限制,比如其日期格式很固定、显示位置不能设置、不能修改字体等,也不能添加拍摄地点等文字说明。 BatchDate是一个专门用来批量往数码照片上添加日期和文字的小软件!”
------------------------------------------
【前言闲语】
初次接触.net程序,这个软件是在霏凡论坛上见到的,当时用OD很容易就破解了但保存不了。于是在网上参考了些相关.net文章后,整理了一下也发篇东东给新手们分享一下。文章中有错漏的地方,请大家多多指出。相信看完下面的小析后,像我一样第一次接触.net新手们也可破解该网站的另一个照片日期文字添加器软件了。有兴趣的朋友可以拿来练习一下

【破解过程】
一开始使用OD试过了解程序可以标志位完成破解,下面将使用.net反编译工具来进行破解:
软件是.NET程序,且加了Xenocode壳。
首先来脱壳,前辈们的文章中提到.NET在内存中会释放原程序的镜像,所以可以将程序在内存 Memory Map 里DUMP出来。
OD载入程序并运行程序,在OD中ALT+M打开 Memory Map 窗口查找原程序窗口标题 BatchDate



每查找到一次字符串后,拉动滚动条至最顶端,直到看到文件头MZ时才停下来DUMP保存数据,如果保存出来的数据不能运行,则需继续往下查找直接保存数据能打开为止,(基本上DUMP保存出来的数据文件大小与原程序文件大小接近),多次CTRL+L查找后可以来到:


保存数据为.EXE 应用程序文件


程序可正常运行,查过显示如下:


可能是脱壳方法不对?以后有时间再去理解它,暂时不管,此时DUMP出的程序可以运行。。。

使用.NET工具 Reflector 可以反编译到代码,但 xenocode fox 2007 不能反编译.



语言选择C#,可以看到关键的字符串:


可以猜想到:
引用:
Label_00C7:
this._x62b8f9c7fa9f4a85 = xa2dd9459c0cfd046.x705c856c7e57c9cd(); //x705c856c7e57c9cd()会返回一个BOOL标志,点击跟过去看看代码先
if (this._x62b8f9c7fa9f4a85)
{
this.x4b46173fdc94ea2b.Text = "软件已注册,谢谢!";
跟随来到这里可以看到false标志,破解工作将是把下面的 false标志都改为true:


将 Reflector 语言改为il,代码将变为如下:
引用:
.method assembly hidebysig static bool x705c856c7e57c9cd() cil managed
{
.maxstack 2
.locals init (
[0] string str,
[1] bool flag,
[2] bool flag2)
L_0000: call string PhotoBatch.xa2dd9459c0cfd046::x3c7e0b82a80758dc()
L_0005: stloc.0
L_0006: br.s L_0022
L_0008: ldc.i4.0 //破解点:ldc.i4.0 改为ldc.i4.1 机器码16->17
L_0009: stloc.1
L_000a: leave.s L_002b
L_000c: ldc.i4.0 //破解点:ldc.i4.0 改为ldc.i4.1 机器码16->17
L_000d: brtrue.s L_0019
L_000f: br.s L_0019
L_0011: ldloc.0
L_0012: call bool [mscorlib]System.String::IsNullOrEmpty(string)
L_0017: brtrue.s L_0008
L_0019: ldloc.0
L_001a: call bool PhotoBatch.xa2dd9459c0cfd046::x06838666885a3344(string)
L_001f: stloc.1
L_0020: br.s L_0024
L_0022: br.s L_0011
L_0024: leave.s L_002b
L_0026: pop
L_0027: ldc.i4.0 //破解点:ldc.i4.0 改为ldc.i4.1 机器码16->17
L_0028: stloc.1
L_0029: leave.s L_002b
L_002b: ldloc.1
L_002c: ret
.try L_0000 to L_0026 catch object handler L_0026 to L_002b
}
这时我们可以进行修改破解了,使用二进制工具查找二进制代码 0a2b1a160bde (也许新手会问这个怎么得来的,只要你将鼠标在代码上停留一下就可以看到了,当然也有可能会查找重复的,这就需要你的眼睛多注意一下了,见图片)


下面使用工具 Hex Workshop 来修改吧,先 CTRL+F 查找 0a2b1a160bde 再修改


将原来的16都改为17,共三处见下面红色字体,保存看看



运行程序显示已注册,测试功能正常。


下面也可以说一下另一个修改方法:
先使用 ildasm2.0 反编译工具DUMP出*.IL文件,再使用ilasm来编译回EXE程序。




用文本工具打开dump.il文件修改,这里我用记事本打修改后保存。
[
刚才已经知道关键了,查找 xa2dd9459c0cfd046::x3c7e0b82a80758dc() 可来到需修改处:


将上面三处作修改保存即:
ldc.i4.0 //破解点:ldc.i4.0 改为ldc.i4.1 机器码16->17

然后将保存修改好的 dump.il编译,使用工具DotNet Helper 1.4比较方便:



编译后跟刚才二进制工具修改的效果一样,只是PEID查壳可显示为.net程序了


至此软件脱壳破解工作完毕!

【版权声明】 本文原创于P.Y.G官方论坛,纯属兴趣交流, 转载请注明作者并保持文章的完整, 谢谢!
分享到:
评论

相关推荐

    Visual Basic 2010 入门经典(第6版)2 中文清晰版

    • 另一类是曾用其他语言进行编程,但初次接触.NET 编程知识的人员。这类初学者现在选择学习Visual Basic 2010 是一个不错的主意。不管您熟悉的语言是Fortran 还是VB 6.本书都将帮助您迅速掌握Visual Basic 2010 。

    Visual Basic 2010 入门经典(第6版) 中文清晰版

    • 另一类是曾用其他语言进行编程,但初次接触.NET 编程知识的人员。这类初学者现在选择学习Visual Basic 2010 是一个不错的主意。不管您熟悉的语言是Fortran 还是VB 6.本书都将帮助您迅速掌握Visual Basic 2010 。 ...

    VB.NET 多线程开发速成教程(附实例)

    过去,我们利用VB开发多线程的应用程序时,是一件很令人痛苦的事,经常是多线程的程序运行是会变成多错误的程序!但在VB.NET中,这种状况已经大为改观。...对于初次接触多线程的人,很适合的入门教程。

    SuperMap iObjects.NET 7c入门文档

    SuperMap iObjects.NET 7c的开发入门教程,适合具备C#程序设计语言基础以及初次接触Supermap iObjects.NET组件开发的用户。

    Mobile移动开发宝典_第01章 .NET Compact Framework移动平台

    第Ⅰ部分主要是为初次接触移动应用程序开发的开发者准备的。您将学习如何选择移动平台(即不同版本的.NET Compact Framework)和开发工具。本章总结了.NET Compact Framework 2.0版与3.5版的新功能。在本章的最后,...

    ASP.NET Core2静默获取微信公众号的用户OpenId实例代码

    为此,写下此文仅为初次接触的朋友提供个小小的帮助。 准备 老规矩,在开始动手前,咱们先简单介绍下实现的组成部分,如下: 微信公众号静默获取用户OpenId:要实现该功能,可以通过微信公众号提供的“网页授权”...

    Visual Basic 2010入门经典(第6版)完整版 之1/2

     ·另一类是曾用其他语言进行编程,但初次接触.NET编程知识的人员。这类初学者现在选择学习Visual Basic 2010是一个不错的主意。不管您熟悉的语言是Fortran还是VB 6,本书都将帮助您迅速掌握Visual Basic 2010。  ...

    Visual Basic 2010入门经典(第6版)完整版 之2/2

     ·另一类是曾用其他语言进行编程,但初次接触.NET编程知识的人员。这类初学者现在选择学习Visual Basic 2010是一个不错的主意。不管您熟悉的语言是Fortran还是VB 6,本书都将帮助您迅速掌握Visual Basic 2010。  ...

    C#微软培训资料

    1.1 Microsoft.NET——一场新的革命.4 1.2 .NET 与 C#.6 1.3 C#语言的特点.8 1.4 小 结 .11 第二章 运行环境 全面了解.NET.12 2.1 .NET 结构.12 2.2 公用语言运行时环境与公用语言规范.13 2.3 开 发 ...

    秀品博客系统 v1.0.zip

    用VS2012打开,这是必须的,然后在你的数据库新建一个数据库,最后ctrl f5运行,程序初次运行,会进入安装页面(其实就是初始化数据库),安装完成后就可以使用了。   开发环境为Visual Studio 2012,数据库为SQL ...

    秀品博客系统 1.0.rar

    用VS2012打开,这是必须的,然后在你的数据库新建一个数据库,最后ctrl f5运行,程序初次运行,会进入安装页面(其实就是初始化数据库),安装完成后就可以使用了。 文件结构说明: Libraries 文件夹 ——...

    Reversing:逆向工程揭密

    12.2.2 .NET程序设计语言 428 12.2.3 通用类型系统 428 12.3 中间语言 429 12.3.1 求值堆栈 430 12.3.2 活动记录 430 12.3.3 IL指令 430 12.3.4 代码实例 433 12.4 反编译器 443 12.5 混淆器 444 12.5.1 重命名符号 ...

    C# qq自动登录 09版本以前适用 源码

    我很庆幸自己之前已经比较熟练的使用VC和Java了,整个C#入门用了不到半个小时,而从初次接触C#到开发这个QQ自动登录器也只用了短短的几个小时,下面,我就给大家讲讲如何用C#开发一个QQ自动登录器,让大家真正体会到...

    farpoint开发文档

    虽然 Spread 产品附带了大量的文档和示例代码,但不可否认的是,对于初次接触Spread 的中国 软件开发人员来讲,有时难免会觉得Spread 入门不太容易。本使用指南旨在帮助软件开发人员较快地 了解和运用Spread 的常用...

    C语言入门经典(第4版)--源代码及课后练习答案

    书中除了讲解C程序设计语言,还广泛介绍了作为一名C程序设计人员应该掌握的必要知识,并提供了大量的实用性很强的编程实例。本书的目标是使你在C语言程序设计方面由一位初学者成为一位称职的程序员。读者基本不需要...

Global site tag (gtag.js) - Google Analytics