net反编译工具Reflector使用详解
NET程序的代码混淆、加壳与脱壳讲述
![NET程序的代码混淆、加壳与脱壳讲述](https://img.taocdn.com/s3/m/4e8c66275627a5e9856a561252d380eb62942389.png)
通常我们通过代码混淆、加密的形式达到软件保护的目的。
在Web开发里我们接触过的可能就是JS代码加密了,可以通过对JS代码进行混淆、加密从而实现对核心JS代码的保护。
如果没有接触过的可以在这里简单了解一下,这次我们就不去细说了。
在以前Win32的软件中,加壳脱壳的技术已经发展的非常成熟,国内有大名鼎鼎的看雪、吾爱破解等论坛,三四年前还在上学时,论坛里的大牛一直都是自己的偶像。
而.NET程序因为编译结果不是机器代码语言,而是IL语言,所以加壳脱壳相关的软件还不是很多,我搜索到了一些,如VS自带的DotFuscator、.NET Reactor、xeoncode等,这次我们就简单介绍下手边有的.NET Reactor 。
1.代码混淆代码混淆主要通过一些名称替换、移位、流程混淆的方式来实现。
先来看一个测试的DEMO程序,很简单的一个Winform程序,实例化窗体时实例化一个User 类,点击按钮显示用户名,这样也可以测试加密、加壳后程序是否能够继续运行。
1using System;2using System.Windows.Forms;34namespace CodeObfuscator5 {6public partial class Form1 : Form7 {8private readonly User _currentUser;9public Form1()10 {11 InitializeComponent();12 _currentUser = new User13 {14 UserID = 1,15 UserName = "Parry@cnblogs"16 };17 }1819private void ButtonAlertClick(object sender, EventArgs e)20 {21 MessageBox.Show(_erName);22 }23 }2425public class User26 {27public int UserID { get; set; }28public string UserName { get; set; }29 }30 }我们使用最常用的反编译工具Reflector对生成的exe反编译查看源码。
.NET反编译工具介绍
![.NET反编译工具介绍](https://img.taocdn.com/s3/m/7a0f63c528ea81c758f57899.png)
代码转换
• 离线转换 Convert .NET 多功能多用途轉換與開發工具,用了无数个离线 转换工具,这个算是最理想的。支持批量转换,但是不能将C#的 for循环转换成VB的For…Next循环。 官方网站:/Convert.htm • 在线转换 SharpDevelop:可以将C#的for循环转换成VB的For…Next循环。 /SnippetConverter.aspx
ILSPY2.1 反编译时,数组申明有误
.NET Reflector 8.5: Dim length As Integer = a.GetLength(0) Dim numArray As Double() = New Double(length - 1) {}
ILSPY2.1: Dim length As Integer = a.GetLength(0) Dim array As Double() = New Double(length)
反编译 For…Next循环
NET Reflector 8.5反编译
Dim num2 As Integer = 0 Do While (num2 < length) num5 = 0 num3 = 0 Do While (num3 < length) Dim num8 As Double = Math.Abs(a(num2, num3)) If (num8 > num5) Then num5 = num8 End If num3 += 1 Loop If (num5 = 0) Then Throw New Exception("Singular matrix") End If numArray(num2) = (1 / num5) num2 += 1 Loop num3
如何使用反编译工具分析源代码(二)
![如何使用反编译工具分析源代码(二)](https://img.taocdn.com/s3/m/3ff7bed5afaad1f34693daef5ef7ba0d4a736d31.png)
反编译工具是一种强大的软件,它可以将已编译的二进制代码转换回源代码的形式。
这样一来,我们就可以轻松地分析和理解程序背后的逻辑。
本文将介绍如何使用反编译工具进行源代码分析,以及如何获得更深入的洞察。
一、反编译工具的选择和安装在开始之前,我们首先需要选择一款可靠的反编译工具。
市面上有很多选择,如IDA Pro、Ghidra等。
这些工具都有各自的特点,使用时需根据具体情况进行选择。
安装反编译工具通常较为简单,只需按照官方提供的指南进行操作即可。
二、导入二进制文件并分析函数调用当我们打开反编译工具后,第一步是导入待分析的二进制文件。
在导入成功后,我们可以看到程序的函数列表。
通过查看函数列表,我们可以初步了解程序的结构和主要功能。
接下来,我们可以选择一个感兴趣的函数进行分析。
选中函数后,反编译工具会将其对应的二进制代码转换为易于阅读的源代码形式。
此时,我们可以仔细研究函数内部的代码逻辑,并分析其中的函数调用关系。
通过追踪函数调用,我们可以逐步探究程序的执行过程,找出关键的代码段。
三、查看变量和数据结构在进行源代码分析时,了解程序中的变量和数据结构十分重要。
反编译工具通常能够识别并还原出这些信息。
通过查看变量和数据结构,我们可以更好地理解程序的运行机制。
在反编译工具中,我们可以查看变量的定义、使用和修改情况。
这有助于我们理清程序中各个变量之间的关系,并追踪它们的值在代码中的传递过程。
此外,对于复杂的数据结构,如数组、结构体等,反编译工具也会提供相应的还原和可视化功能,方便我们进一步分析。
四、进行逆向分析反编译工具不仅可以还原源代码,还可以帮助我们进行逆向分析。
逆向分析是指通过分析程序的二进制代码,来获取关键信息或发现潜在的漏洞。
通过逆向分析,我们可以发现程序隐藏的逻辑、算法或者加密方法。
这对于加密软件、恶意软件等领域非常有用。
在逆向分析过程中,我们可以利用反编译工具提供的调试功能,逐步执行程序,观察程序的行为,并通过断点等技术手段来获取我们所需的信息。
.Net反编译技术详解及4个反编译工具介绍
![.Net反编译技术详解及4个反编译工具介绍](https://img.taocdn.com/s3/m/50ab686e7fd5360cba1adb2f.png)
.Net反编译技术详解及4个反编译工具介绍Net反编译技术详解及4个反编译工具介绍什么是反编译?高级语言源程序经过编译变成可执行文件,反编译就是逆过程。
即通过技术手段将可执行文件还原成源代码。
此文讲解如何将.net(c#、F#、)编写的可执行文件还原成c#代码。
了解.net(c#)的编译过程C#源代码经过编译器的编译之后,变成MSIL微软中间语言。
其实也就是一个可执行文件,也可以叫做程序集(.exe文件)。
注意:不是所有的exe文件都叫程序集,这个文件是由微软中间语言组成的才叫程序集。
当程序被执行时,微软中间语言(程序集)将被CLR翻译成平台对应的CPU指令,然后交给CPU执行。
注意:CPU的指令并不是相同的,不同平台的CPU指令可能有比较大的区别。
如:Intel和AMD在开机或者关机的时候Intel可能为111 而AMD可能为000。
不同型号的CPU 指令也可能有区别。
如:四核和双核。
C#代码的编译过程如下图所示:c#反编译过程:反编译过程即将.net 程序集转换成IL中间语言,然后再将IL转为c#代码。
还原率接近90%。
反编译工具介绍:说到.net 反编译工具,很多人第一反应都是Reflector这款神器。
但是我呢认为这是个垃圾软件,为什么呢,因为他收费啊,而且没有什么特别出众的功能,所以本文不加以介绍。
本文主要介绍ILSpy、dnSpy、JetBrains和Telerik JustDecompile以及可直接修改程序集的reflexil插件和脱壳反混淆的de4Dot插件。
文本的示例程序:特意用c#写了一个checkMe程序,用来展示说明以下各个工具的功能。
程序很简单,一个登陆框,输入对的密码即可显示主窗体,显示一个“今日头条很伟大”的字样.checkMe1、ILSpy:ILSpy是一个开源免费的.Net反编译软件,基于MIT 许可证发布。
作者在工作中使用最频繁的就是它。
,ILSpy 是为了完全替代收费的Reflector而生,它是由iCSharpCode 团队出品,这个团队开发了著名的SharpDevelop 。
Reflector反编译.NET文件后修复
![Reflector反编译.NET文件后修复](https://img.taocdn.com/s3/m/5b53e8d48ad63186bceb19e8b8f67c1cfad6eef9.png)
Reflector反编译.NET⽂件后修复谈到"C#代码反编译",⼤家可能都会想到 Reflector代码反编译⼯具,对其应该也不会太陌⽣;做C#开发,它算得上是⼀个不可或缺的实⽤⼯具。
通过它我们可以很⽅便的查看⼀个程序集的源代码(这是其最基本的使⽤,也是⼤家常⽤的),还可以⽅便破解软件...,⽽我这篇⽂章要跟⼤家分享的是:⽤Reflector将C#的开发的软件[项⽬](此⽂中所说的是winForm项⽬,对于.net项⽬可以借鉴或参考)的项⽬代码还原——反编译得到可运⾏项⽬源码。
我所做的反编译,并不是'破解',其使⽤的前提或情况是:公司原来请⼈开发的'配餐软件(幼⼉园版)',现有客户咨询想买,并且软件中存在⼀些问题需改,——不是本⼈开发的,该软件也⽆源码,想修改只能想办法得到软件的源码。
具体的'破解'⽅法记录在下,⽅便⾃⼰以后查看!(ps: '破解'的⽅法,⾃⼰之前就摸索过。
但困于反编译之后的error⽐较多,没有耐⼼,有的问题感觉⽐较离奇,试了⼏次不⾏就放弃了 ——这就间接的说明:真正的⿊客,应该都是⽐较有耐⼼的,呵呵..., 但做软件开发,⼜何尝不需要这样?!)a.使⽤到的⼯具:Reflector,具体的说是:Reflector插件File disassembler(具体是什么和how to use,直接上⽹查)。
b. 打开Reflector,选择要'破解'的软件(.exe)主程序,再选择并点击如图: , 在右侧出现的程序集(输出)类型选择界⾯选择类型'windows Appliction' (因为是winForm应⽤程序,如果是选择的其它如'class ...'类库,则需要在之后的步骤中,改变项⽬属性中的输出类型,不建议这样操作),如图:点击⽣成即可得到此主程序集的源码,其它的相关程序集再如此操作即可! ——不要以为⼤功告成,这只是第⼀步,⿇烦的在后⾯!c.将⽣成的源码在Vs中打开(项⽬), 先试着运⾏下,(⼀般)会报错,排除'xxx程序集不存在'这类的错误,我所遇到的如下:using System;using System.Collections.Generic;using pilerServices;using System.Runtime.InteropServices;[CompilerGenerated]internalclass<PrivateImplementationDetails>{1FF4F699-35E0-4117-BDBC-9E44A1B0F9F5}{internalstatic Dictionary<string, int> $$method0x600012e-1;internalstatic Dictionary<string, int> $$method0x6000137-1;internalstatic Dictionary<string, int> $$method0x6000137-2;internalstatic Dictionary<string, int> $$method0x600014a-1;internalstatic Dictionary<string, int> $$method0x6000169-1;internalstatic Dictionary<string, int> $$method0x60001b6-1;internalstatic __StaticArrayInitTypeSize=20 $$method0x6000213-1; // data size: 20 bytesinternalstatic __StaticArrayInitTypeSize=20 $$method0x6000213-2; // data size: 20 bytesinternalstatic __StaticArrayInitTypeSize=20 $$method0x6000213-3; // data size: 20 bytesinternalstatic __StaticArrayInitTypeSize=20 $$method0x6000213-4; // data size: 20 bytes[StructLayout(LayoutKind.Explicit, Size=20, Pack=1)]privatestruct __StaticArrayInitTypeSize=20{}}源码⽂件中会出现⼀个 _PrivateImplementationDetails_{1FF4F699-35E0-4117-BDBC-9E44A1B0F9F5}.cs ⽂件名很长内容如上的乱码类,对此解决办法时:注释此类或直接删除。
win10怎么打开dll文件dll文件打开方法步骤
![win10怎么打开dll文件dll文件打开方法步骤](https://img.taocdn.com/s3/m/b1f5ac4d814d2b160b4e767f5acfa1c7aa0082a1.png)
win10怎么打开dll⽂件dll⽂件打开⽅法步骤win10 dll⽂件怎么打开查看?电脑安装win10系统后发现C盘上⾯有很多dll格式的⽂件,⿏标双击发现打不开,系统dll是什么⽂件?毕竟储存在系统盘,也不敢随意删除,此⽂件需要什么⼯具才能打开?想知道的朋友⼀起和⼩编⼀起看看吧!什么是.dll⽂件dll是Dynamic Link Library的缩写,意为动态链接库。
DLL⽂件⼀般被存放在C:WindowsSystem⽬录下。
在Windows中,许多应⽤程序并不是⼀个完整的可执⾏⽂件,它们被分割成⼀些相对独⽴的动态链接库,即DLL⽂件,放置于系统中。
当我们执⾏某⼀个程序时,相应的DLL⽂件就会被调⽤。
⼀个应⽤程序可有多个DLL⽂件,⼀个DLL⽂件也可能被⼏个应⽤程序所共⽤,这样的DLL⽂件被称为共享DLL⽂件。
win10怎么打开dll⽂件想要打开dll⽂件需要下载⼯具:.NET Reflector(.net反编译⼯具) v10.0.7.774 特别版(附破解步骤+注册机)类型:编译⼯具⼤⼩:9.32MB语⾔:英⽂软件时间:2020-10-16查看详情⽅法⼀、1、百度搜索下载Reflector绿⾊版,解压,可找到⽂件Reflector。
2、双击Reflector,即可运⾏Reflector,可看到如下界⾯选中顶部菜单栏的“File”-“Open Assembly...”,具体如下图:3、找到想要查看的DLL⽂件,然后打开即可,具体如下图:4.点击类名我们就可以看到⾥⾯编写的内容了。
⽅法⼆、1、打开⼀个程序的安装⽬录,可以看到⼀些dll的⼀些⽂件,双击就会出现如图提⽰,如果电脑中没有安装对应软件的话就⽆法打开它。
2、右击此⽂件选择打开⽅式,选择记事本。
3、得到的就是⼀团乱码。
4、想要查看它就可以下载安装Reflector绿⾊版反编译⼯具,运⾏Reflector,出现如图所⽰窗⼝。
5、选择DLL对应的版本,点击OK。
.net reflector反编译用法
![.net reflector反编译用法](https://img.taocdn.com/s3/m/91f24625dcccda38376baf1ffc4ffe473268fd46.png)
.net reflector反编译用法一、简介.NET Reflector是一款强大的.NET程序集反编译器,可以将已编译的.NET程序集(DLL、EXE文件)反编译成C#或者源代码,对于学习、调试、修改或逆向工程.NET程序非常有用。
本文将详细介绍.NET Reflector的使用方法。
二、安装与打开1. 下载并安装.NET Reflector。
根据软件包中的安装指南进行安装。
2. 安装完成后,打开.NET Reflector。
你将看到一个界面,包括左侧的程序集浏览器、中间的代码编辑器以及右侧的异常窗口。
三、反编译步骤1. 添加程序集:在左侧的程序集浏览器中,点击“添加文件”按钮,选择需要反编译的.NET程序集文件。
可以一次添加多个文件。
2. 反编译:在选择好程序集后,点击工具栏上的“反编译”按钮,或者使用快捷键F5,开始反编译过程。
3. 浏览源代码:反编译完成后,可以在代码编辑器中看到反编译后的源代码。
可以在编辑器中高亮显示关键字、变量、类和方法名,并支持代码跳转。
4. 导出源代码:如果需要,可以选择导出源代码文件,以方便查看和编辑。
在代码编辑器中,可以选择“文件”->“导出”菜单项,选择导出格式(如TXT、C#、等),保存文件即可。
四、常见问题及解决方法1. 反编译失败:请检查所选程序集是否存在问题,如权限不足、文件损坏等。
如果问题依然存在,可以尝试重新安装.NET Reflector 或联系技术支持。
2. 无法跳转:在编辑器中无法跳转到某个方法或变量时,可能是由于该方法或变量未被反编译成功。
可以尝试刷新编辑器或重新反编译程序集。
3. 代码格式不正确:反编译后的代码可能存在格式不正确的情况,需要进行简单的排版和修复。
可以使用编辑器中的“自动格式化”功能,或者手动调整代码格式。
五、注意事项1. 法律问题:反编译他人代码时,需要遵守相关法律法规和道德规范。
不得侵犯他人知识产权,不得用于非法的目的。
.net ref用法
![.net ref用法](https://img.taocdn.com/s3/m/0757d7092f3f5727a5e9856a561252d380eb20f6.png)
在.NET 中,ref 关键字用于声明引用参数。
引用参数允许将参数传递给方法,并使得方法能够修改调用者提供的变量。
以下是ref 关键字的基本用法和示例:基本用法:csharpCopy code// 声明一个方法,使用ref 参数void ModifyValue(ref int x) {x = x * 2;}// 在调用方法时使用ref 参数int number = 5;ModifyValue(ref number);Console.WriteLine(number); // 输出10在上面的例子中,ModifyValue 方法接受一个int 类型的参数,并通过ref 关键字将这个参数声明为引用参数。
当调用ModifyValue 方法时,传递的参数number 将被修改,因此Console.WriteLine 输出的是修改后的值。
注意事项:调用方法时,实参必须是变量(可修改的),不能是常量或表达式。
ref 关键字必须在方法的声明和调用两侧都存在。
使用ref 返回多个值:ref 关键字还可以用于返回多个值。
在这种情况下,传递参数时不仅传入值,还传入对应变量的引用,以便在方法内修改。
csharpCopy codevoid GetValues(ref int a, ref int b) {a = 10;b = 20;}// 在调用方法时使用ref 参数获取多个值int value1, value2;GetValues(ref value1, ref value2);Console.WriteLine(value1); // 输出10Console.WriteLine(value2); // 输出20这里的GetValues 方法通过两个ref 参数返回两个值。
在调用方法时,传递了两个变量的引用,方法修改了这两个变量的值。
使用ref 关键字需要谨慎,因为它允许方法修改调用者提供的变量,可能引入副作用。
在大多数情况下,使用ref 应该考虑是否真的需要修改调用者提供的变量,以及是否有其他更安全的替代方案。
.net反编译工具Reflector使用详解-ASP.net-编程文档-编程论...
![.net反编译工具Reflector使用详解-ASP.net-编程文档-编程论...](https://img.taocdn.com/s3/m/0dda4674f11dc281e53a580216fc700abb685279.png)
.net反编译工具Reflector使用详解-编程文档-编程论...早就听说Reflector这个强大的类库分析与反编译工具,不过一直没有很好的利用起来。
最近使用Reflector解决了一个实际开发问题,现将其总结出来。
需求导入:项目是一个GIS项目,在项目中使用到了ESRI公司的Application Development Framework中的一个WebControls控件,此控件的功能过于复杂,并且引用到了ArcGIS Server的很多COM组件。
由于项目根本就没有使用ADF的任何服务器技术,但是也不得不跟着引用一些COM组件,更麻烦的是还得安装ADF(此组件可是有将近200M的庞然大物)。
项目经理需要我解决这种问题并且必须尽快解决,我当时也相应的考虑到了两个方案:a.重新写一个类似的控件,此控件只做项目中用到的一些功能,至于其它功能以后再扩展;b.利用ESRI的WebControls控件,去掉对COM的所有引用,因为项目没有使用WebControls控件的任何服务器技术,也就无需COM引用由于时间有限,所以决定采用第二种方案,一开始使用ILDASM 分析了Web Server控件的一些类,发现过于类过于庞大。
偶然想起了Reflector工具(我以前使用过Reflector工具分析过源代码,不过好久没用),以下是整个解决过程:1.打开Reflector工具并且下载了一个FileDisassembler插件,FileDisassembler插件用于输出程序集的反编译结果到文件中。
打开Reflector工具,并导入FileDisassembler插件。
导入好后加载程序集将反编译结果输出到指定的文件夹中;Reflector下载地址:下载时必须输入用户名和Email地址,用户名中必须有空格;FileDisassembler插件的下载地址:2.使用新建一个项目,根据文件夹结构新建相应的文件夹,导入所有的源文件和资源文件。
使用Reflector反编译并提取源代码
![使用Reflector反编译并提取源代码](https://img.taocdn.com/s3/m/d9d6a68bed3a87c24028915f804d2b160b4e86bb.png)
使用 Reflector反编译并提取ห้องสมุดไป่ตู้代码
Reflector是一个强大的.net 反编译工具,有时我们不止需要反编译源代码,更需要提取源代码。 Reflector本身不自带提取源代码功能,不过可以借助插件Reflector.FileDisassembler来提取源代码,方法如下: 1. 下载并安装Reflector,安装完成后打开Reflector 2. 下载插件,默认是下载一个压缩包,解压得到Reflector.FileDisassembler.dll 3. Reflector中添加插件
最后点击Close即可 4. 左侧选中需要提取源代码的程序集,执行Tools→File Disassembler
设置好输出目录与项目类型,然后点击“Generate”即可提取源代码
ILSpy反编译工具
![ILSpy反编译工具](https://img.taocdn.com/s3/m/d880778083d049649b665893.png)
Reflector是.NET开发中必备的反编译工具。
即使没有用在反编译领域,也常常用它来检查程序集的命名规范,命名空间是否合理,组织类型的方法是否需要改善。
举例说明,它有一个可以查看程序集完整名称的功能,请看下图这里的Name,是标识一个程序集的完整标识,当GAC中存在程序集的多个版本时,这个名称是唯一的识别名称。
但是,Reflector很早就转向收费软件了,需要购买许可才可以使用。
对于耻于用盗版的朋友,通常会放弃。
有朋友说,Reflector 并没有增加更霸道的功能,却转向收费,令人费解。
再看看市场上的.NET反编译软件,被Reflector击溃。
一提到Reflector,说到.NET反编译,Reflector常常是默认的首选工具。
这里提起一下Visual Studio的垄断。
Visual Studio占据了.NET开发工具系列的绝对垄断地位。
在.NET 1.x时代,还有C# Builder,来使用和体验,一争高低。
可是到后来,.NET Framwork更新频繁,动辙在编译器级别,和语言层面做更新,这令第三方的软件开发工具商非常苦恼,这些工具也从市场上慢慢消声匿迹,几乎没有第三方的软件开发商愿意开发.NET 开发工具与Visual Studio一争高低。
没有了竞争,进步的速度要慢很多。
Visual Studio 2008差不多就是Visual Studio 2005+SP的替代品,在工具层面,Visual Studio 2005 SP1加上了Web Application,就是Visual Studio 2008。
虽然说语言层面是进步了很多,.NET 3.0,.NET 3.5,LINQ, 框架方法增加:WCF,WPF,WF,但是,我一直认识从2005到2008,它在工具层面没有什么进步。
SharpDevelop 是除Visual Studio外,另一个可选择的唯一的.NET开放工具,并且它是开源的。
关于.net dll文件反编译
![关于.net dll文件反编译](https://img.taocdn.com/s3/m/e872a1808762caaedc33d404.png)
关于.net dll文件反编译1.reflector 进行反编译,可以反射中间语言(适合不懂IL),具体的初始化设置方法:点击View->Add-Ins...,弹出一个窗口,然后点击Add->选择文件夹里面的:"FileGenerator.dll",点击close.然后回到Reflector窗口,Tool->Generator File(s)... 右边就出现了插件的窗口,选中左边的dll文件,点击右边的导出文件,源代码就全部导出来了!另一个插件Reflector.FileDisassembler.dll设置方法也和这个一样,另外还有一些Reflector的相关插件下载,2.导出的il文件可以使用WinHex进行修改3.修改后使用IL反编译程序进行编译,相关知识:il 转换成dll 和 exe 用的是ilasmexe dll转换成 il 用的是 ildasmilasm 和 ildasm 在 C:\WINDOWS\\Framework\v1.* 后v2.* 下有微软提供(1)ilasm示例:下面的命令对 MSIL 文件 myTestFile.il 进行汇编并产生可执行文件 myTestFile.exe。
ilasm myTestFile下面的命令对 MSIL 文件 myTestFile.il 进行汇编并产生 .dll 文件 myTestFile.dll。
ilasm myTestFile /dll下面的命令对E盘 MSIL 文件 myTestFile.il 进行汇编并产生 .dll 文件 myTestFile.dll。
ilasm E:\myTestFile /dll下面的命令对 MSIL 文件 myTestFile.il 进行汇编并产生 .dll 文件 myNewTestFile.dll。
ilasm myTestFile /dll /output:myNewTestFile.dll(2)ildasm示例下面的命令使 PE 文件 MyHello.exe 的元数据和反汇编代码显示在 Ildasm.exe 的默认 GUI 中。
Reflector的安装与破解
![Reflector的安装与破解](https://img.taocdn.com/s3/m/87d3e774bf1e650e52ea551810a6f524cdbfcb57.png)
Reflector的安装与破解第一篇:Reflector的安装与破解Reflector的安装与破解先提供一个下载地址:一、安装教程1、运行ReflectorInstaller.exe第一个是桌面应用程序,第二个是Visual Studio 插件,Next下一步安装勾选同意协议,Next下一步安装可以选择一起或者分开安装(默认路径),也可以指定路径安装,最好默认路径安装,在稍后的破解教程中有用。
安装之前会检查你的程序运行状态,比如Visual Studio,.NET Reflector,SQL Server等,如果你这些程序正在运行,那么它会提示你结束这些程序,然后再进一步安装,否则无法安装。
正在安装中...安装成功!接下来就是破解了。
二、破解教程打开Reflector,选择Help—>Activate,运行Keygen.exe,将Keygen中的serial number copy到注册页面。
先断网,点击Activate注册。
稍等一会儿,会提示你未能解析此远程名称:''点击Activate Manually(离线注册)复制1到2,然后复制4到5,当然你也可以把生成的代码保存为txt文件,然后Load from File导入然后点击Finish完成,破解成功!第二篇:LoadRunner 8.1破解与无法安装LoadRunner 8.1破解与无法安装我也是前几天才装的LR8.1,遇到了不少的困难,不过总算装好了,我完全是菜鸟级的任务,以前都没有听过LR的,现在把我看到的帖子综合一下,有兴趣的看看,也许可以少走好多的弯路哦。
关于LoadRunner 8.1的破解,网上有许多相关的内容,相互抄袭的版本彼彼皆是,但照其破解方法操作后,发现LR 8.1仍有许多功能不能正常使用。
为了给软件做性能负载,经作者(Jerry Yuan)反复尝试后,修订了破解方法,并测试安装成功。
从网上下载LR 8.1,一种是需要生成临时安装目录;另一种则是直接安装即可。
.NETReflector反编译的方法
![.NETReflector反编译的方法](https://img.taocdn.com/s3/m/7df16a71dcccda38376baf1ffc4ffe473368fdb2.png)
.NETReflector反编译的⽅法
⾸先启动.NET Reflector,然后添加进⼊dll或exe。
然后选择Export Source Code...,将反编译后的代码⽂件,⽣成到指定⽬录。
到这⼀步骤时,稍等⼀会,就能够在指定⽬录就能够看到反编译出来的项⽬⽂件了
如果此时你注意的话,发现我们反编译出来的代码是没有.sln⽂件的。
所以,我们需要在Vs⾥新建⼀个空项⽬,然后将反编译出来的项⽬⽂件包含进空项⽬中。
然后把刚刚反编译出来的⽂件放到与WebDev.WebServer40.sln,同⼀个⽬录中。
xxx.csproj保留反编译出来的(⼜或者在空项⽬中添加所有⽂件到项⽬中)。
然后排除掉所有错误,该引⽤的引⽤,该排查的排查,直到没错就OK了。
Reflector使用详解
![Reflector使用详解](https://img.taocdn.com/s3/m/af1636b0294ac850ad02de80d4d8d15abe2300b3.png)
Reflector使⽤详解Reflector是由微软员⼯Lutz Roeder编写的免费程序。
Reflector的出现使.NET程序员眼前豁然开朗,因为这个免费⼯具可以将.NET程序集中的中间语⾔反编译成C#或者Visual Basic代码。
除了能将中间语⾔转换为C#或Visual Basic以外,Reflector还能够提供程序集中类及其成员的概要信息、提供查看程序集中中间语⾔的能⼒以及提供对第三⽅插件的⽀持。
2、解压后,双击Reflector.exe,如果有选择默认版本的.Net Framework,根据需要选择即可。
你选择的版本不同则出现的默认程序集也不同,我选择的是.Net3.5;3、点击file-open选择要反编译的DLL,打开后程序集的命名空间会出现在列表中;4、点击树形列表中的类,右边就会出现相应的反编译代码。
反编译后的代码和原代码基本没有什么区别;5、如果想把反编译后的代码导⼊到⽂件中,我们可以使⽤Reflector.FileDisassembler这个Reflector插件,下⾯介绍Reflector.FileDisassembler插件⽤法;8、选择Tools—File Disassembler;9、选择需反编译的类⽂件,点击Generate按钮,此时需要选择输⼊⽂件名,也可以直接点击OK。
Reflector将会⾃动创建⼀个⽂件夹并⽣产类⽂件,该⽂件的路径在Reflector.exe的⽬录下;另外还有⼀些Reflector的相关插件下载:Reflector.FileDisassemblerThis add-in can be used to dump the disassembler output to files for any Reflector supported language.Reflector.CodeMetricsAnalyses .NET assemblies and shows design quality metrics. The menu item is registered under the "Tools" menu.Reflector.SQL2005BrowserThis add-in allows to browse .NET assemblies stored in SQL Server 2005 (Yukon) databases.This add-in allows to browse .NET assemblies stored in SQL Server 2005 (Yukon) databases.Reflector.DelphiLanguageThe Delphi view that is used inside .NET Reflector provided as a language add-in.Reflector.McppLanguageThis add-in extends Reflector with a Managed C++ language rendering module.Reflector.ChromeLanguageThis add-in extends Reflector with a Chrome language rendering module.Reflector.DiffThis add-in shows differences between two versions of the same assembly.Reflector.VisualStudioThis program is hosting .NET Reflector inside the Visual Studio 2003 IDE. Run Reflector.VisualStudio.exe to register the add-in with Visual Studio.Reflector.ClassViewShows class definitions as plain text with color coding. The menu item is registered under the "Tools" menu.Reflector.CodeModelViewThis add-in shows the underlying code model objects for a selected node in .NET Reflector. The menu item is registered under the "Tools" menu.Reflector.FileGeneratorThis add-in can be used to dump the disassembler output to files for any Reflector supported language.Reflector.GraphThis add-in draws assembly dependency graphs and IL graphs.Reflector.OpenRunningAssemblyOpens an assembly or dependency from a process running on the system. The menu item is registered under the "Tools" menu.。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
this.InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
if (this.textBox1.Text.Trim() == "1")
{
this.ClearLabel();
bel1.Text = this.strTEST1;
base.Controls.Add(bel2);
base.Controls.Add(this.button1);
base.Controls.Add(bel1);
= "Form1";
this.Text = "TEST_DISCOM";
base.ResumeLayout(false);
{
ponents.Dispose();
}
base.Dispose(disposing);
}
private void InitializeComponent()
{
bel1 = new Label();
this.button1 = new Button();
bel2 = new Label();
}
else
{
ClearLabel();
bel4.Text = "NO SELECT";
}
}
private void ClearLabel()
{
bel1.Text = String.Empty;
bel2.Text = String.Empty;
bel3.Text = String.Empty;
base.AutoScaleMode = (AutoScaleMode) 1;
base.ClientSize = new Size(0x16d, 0xf8);
base.Controls.Add(this.textBox1);
base.Controls.Add(bel4);
base.Controls.Add(bel3);
this.button1.set_UseVisualStyleBackColor(true);
this.button1.Click += new EventHandler(this.button1_Click);
bel2.set_AutoSize(true);
bel2.set_BorderStyle(BorderStyle.FixedSingle);
bel3.Text = this.strTEST3;
}
else
{
this.ClearLabel();
bel4.Text = "NO SELECT";
}
}
private void ClearLabel()
{
bel1.Text = string.Empty;
bel2.Text = string.Empty;
this.textBox1.Location = new Point(0x33, 0x5e);
= "textBox1";
this.textBox1.Size = new Size(100, 0x13);
this.textBox1.TabIndex = 5;
base.AutoScaleDimensions = new SizeF(6f, 12f);
bel4.Text = String.Empty;
}
}
}
反编译之后生成的代码
namespace WindowsApplication1
{
using System;
using ponentModel;
using System.Drawing;
using System.Windows.Forms;
this.button1.Location = new Point(0x33, 0x2a);
= "button1";
this.button1.Size = new Size(0x6b, 0x1c);
this.button1.TabIndex = 1;
this.button1.Text = "button1";
namespace WindowsApplication1
{
public partial class Form1 : Form
{
private String strTEST1 = "strTEST1";
protected String strTEST2 = "strTEST2";
public String strTEST3 = "strTEST3";
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
if (this.textBox1.Text.Trim() == "1")
{
ClearLabel();
bel1.Text = strTEST1;
bel3.Size = new Size(0x25, 14);
bel3.TabIndex = 3;
bel3.Text = "label3";
bel4.set_AutoSize(true);
bel4.set_BorderStyle(BorderStyle.FixedSingle);
事例被反编译的程序c#:
using System;
using System.Collections.Generic;
using ponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
bel1.Location = new Point(0x33, 0x92);
= "label1";
bel1.Size = new Size(0x25, 14);
bel1.TabIndex = 0;
bel1.Text = "label1";
bel3.Text = string.Empty;
bel4.Text = string.Empty;
}
protected override void Dispose(bool disposing)
{
if (disposing && (ponents != null))
public class Form1 : Form
{
private Button button1;
private IContainer components = null;
private Label label1;
private Label label2;
private Label label3;
private Label label4;
bel2.Location = new Point(0x33, 160);
= "label2";
bel2.Size = new Size(0x25, 14);
bel2.TabIndex = 2;
bel2.Text = "label2";
}
else if ("2")
{
this.ClearLabel();
bel2.Text = this.strTEST2;
}
else if (this.textBox1.Text.Trim() == "3")
{
this.ClearLabel();
private string strTEST1 = "strTEST1";
protected string strTEST2 = "strTEST2";
public string strTEST3 = "strTEST3";
private TextBox textBox1;
public Form1()
base.PerformLayout();
}
}
}
bel4.Location = new Point(0x33, 0xbc);
= "label4";
bel4.Size = new Size(0x25, 14);
bel4.TabIndex = 4;
bel4.Text = "label4";
bel3.set_AutoSize(true);
bel3.set_BorderStyle(BorderStyle.FixedSingle);
bel3.Location = new Point(0x33, 0xae);
= "label3";
}
else if(this.textBox1.Text.Trim() == "2")
{
ClearLabel();
bel2.Text = strTEST2;
}
else if(this.textBox1.Text.Trim() == "3")
{
ClearLabel();
bel3.Text = strTEST3;
bel3 = new Label();
bel4 = new Label();