当前位置:首页 » 编程软件 » code独立项目反编译

code独立项目反编译

发布时间: 2022-05-17 01:33:59

1. 如何在Visual Studio和CodeBlocks中反编译C++代码

没壳的就好办了,你可以试试ResourceHack这样的软件,它支持修改程序资源,通常用于做汉化。软件的文字和链接有时候是按对话框资源被编译到exe或dll文件中的,ResourceHack之类就是读取这种资源的。别用于搞破坏和卖钱,否则…

2. 怎样反编译程序

高级语言源程序经过 编译 变成可执行文件,反编译就是逆过程。
但是通常不能把可执行文件变成高级语言源代码,只能转换成汇编程序。
计算机软件反向工程(Reversepengineering)也称为计算机软件还原工程,是指通过对他人软件的目标程序(可执行程序)进行“逆向分析、研究”工作,以推导出他人的软件产品所使用的思路、原理、结构、算法、处理过程、运行方法等设计要素,作为自己开发软件时的参考,或者直接用于自己的软件产品中。
反编译是一个复杂的过程,所以越是高级语言,就越难于反编译,但目前还是有许许多多的反编译软件: VB: VBExplorer 、VB反编译精灵和VBRezQ;只能反编译界面图像,好像代码不能完全反编译 java: JAD ;java的反编译比较常见,所以反编译比较完全, 将class文件反编译成java文件也是有可能的 C++ : eXeScope Dephi: DEDE c#:Reflector 易语言:E-Code Explorer.exe(易格式可执行文件分析器)。

3. EXE文件反编译成源码

EXE文件可以通过步骤来反编译成源码,具体步骤如下:

1、在网络上搜索下载反编译工具ILSpy,ILspy是一个开源的.net反编译软件,使用十分方便。解压后如图,双击.exe文件打开解压工具。

(3)code独立项目反编译扩展阅读:

反编译也称为计算机软件还原工程,是指通过对他人软件的目标程序(比如可执行程序)进行“逆向分析、研究”工作,以推导出他人的软件产品所使用的思路、原理、结构、算法、处理过程、运行方法等设计要素,某些特定情况下可能推导出源代码。

exe是编译好的程序文件 要看结构就得反编译 但是通常不能把可执行文件变成高级语言源代码,只能转换成汇编程序。 所以要要看结构不止要会反编译 还得精通汇编语言。

4. 请教下 怎么反编译 网站BIN文件下的 App_Code.dll文件我想修改里面的东西 但是 不知道怎么修改

没有编程基础就不要去瞎搞了

5. 如何反编译一个exe文件,并修改里面一句代码

1、首先打开浏览器,网络搜索“反编译工具ILSpy”,选择一个安全的网站进行下载。

6. 我自己做出来的E程序 用E-Code Explorer来反编译 为什么不可以

生成的程序是不能看到源代码的,不过可以看到那个程序的资源,用E-Code Explorer 反汇编调试由易语言编译生成的易格式可执行文件,分析内部结构,查看其中的各项数据。1。格式分析:分析易格式可执行文件的总体结构,查看对应项的数据。分别对PE骨骼(PE头)和易格式原体分析,以树形结构清晰的显示,同时辅以详细的分析表格。2。反汇编分析:快速的静态反汇编易格式可执行文件。提供方便的跳转、调用目标地址的代码预览功能。3。窗体分析:对易格式可执行文件中包含的窗体数据分析。以树型结构清晰的显示窗体单元的从属结构。详细的控件属性显示、准确的事件处理函数定位、与反汇编模式便捷的切换,让使用者可以立即进入要调试的事件函数领空,避免在runtime的空间里四处打转浪费时间。这一点对于调试非线性事件驱动类型的程序是必须的。4。符号修饰:可以调用易语言支持库作为符号表,对反汇编后的代码进行修饰,可以直接分析出函数所调用的方法,操作的属性,使用到的常量、基本数据类型、自定义数据类型和窗口单元。极大地提高了代码的可读性。5。内部数据分析:能够分析出程序使用到的常量、API函数、服务,调用的支持库。6。多种加载方式:支持从文件加载和从某一进程的内存中直接加载反汇编。直接从进程列表附加,可以避免一部分AntiDebug造成的调试困难。7。支持多种格式:支持标准PE可执行文件,易格式原体文件,其他类型的易格式文件。均可正确分析。8。易格式捕捉者:对于不明外壳的易格式可执行文件(如:加壳后的,通过其它手段封装的),能够方便快速的进行分析。9。提供十六进制文件查看功能。10。提供多种辅助工具,完成从内存mp易格式原体、修复重定位信息、易格式原体生成EXE文件等功能。11。分析结果和反汇编结果均可直接导出生成报告文件。12。支持自定义反汇编,HEX查看的环境颜色,你可以选择自己喜欢的颜色来阅读代码。13。详细的分析设置,可以自己设置最合适的调试环境。14。提供文件拖放功能,直接进行分析或调试。15。支持从命令行获取要分析的文件。其他更多的功能等待您在使用中发现…………

7. U3D如何做代码混淆

Unity代码混淆方案
内容提要:Unity引擎下的代码保护,由于Unity引擎的一些特殊性,实行起来较为复杂,在国内外业界并没有现成的方案。笔者通过在《QQ乐团》项目上的实际尝试,得出了一种具体可行,能够有效保护代码逻辑的方案。特此分享给关注Unity引擎的项目,希望能提供一些的参考。
背景
Unity引擎上的程序执行在Mono运行时上,使用Mono编译出的程序集格式与.NET标准一致。C#是Unity引擎下主要的开发语言,它具备不少高级语言特性,如反射、元数据、内置序列化等。但C#同时也是很容易被反编译的语言,如果不采用任何保护措施,使用常用的工具(.NET Reflector)便能很容易得到可二次编译的代码。对项目运营带来了比较大的风险。
.NET平台下通常的保护手段是混淆编译出的程序集。VisualStudio自带了一个混淆工具Dotfuscator可以对程序集进行混淆。功能包括名称修改,流程混淆,字符串加密等。经过Dotfuscator混淆后的程序集,能够避免被常用反编译工具破解。变量的表意性被破坏,同时函数的内部流程也被混淆(如下[B1] )。能有效起到保护源代码的效果。
publicclass181: 218
{
// Fields
publicuint0;
publicushort1;
publicstaticreadonlyuint2;
publicstaticreadonlyuint3;
// Methods
static181();
public181();
public95.02();
public95.02(ref515A_0, uintA_1);
public95.02(79A_0, refuintA_1);
public95.02(ref79A_0, uintA_1);
public95.02(byte[] A_0, intA_1, refuintA_2);
public95.02(ref481A_0, intA_1, charA_2);
public95.02(refstringA_0, intA_1, charA_2);
public95.02(refbyte[] A_0, intA_1, refintA_2, uintA_3);
public95.03(ref79A_0, uintA_1);
public95.03(refbyte[] A_0, intA_1, refintA_2, uintA_3);
public95.04(refbyte[] A_0, intA_1, refintA_2, uintA_3);
}
public95.00(refsbyteA_0, intA_1)
{
// This item is obfuscated and can not be translated.
goto Label_0006;
if(1!= 0)
{
}
95.0local= 95.0.0;
bytenum= 0;
local = this.0(refnum,A_1);
A_0 = (sbyte) num;
returnlocal;
Unity引擎下,Mono编译出的程序集,由于采用与.NET相同的格式标准。能够直接被Dotfuscator混淆。但Unity引擎有一些特殊的地方,使混淆工作与一般的.NET程序存在差异。第三节将主要讨论这些特殊点。
Unity引擎下代码混淆的特殊性
代码被资源引用[B2] 。Unity的可视化编辑特性在设计上的关键之处在于使代码能够以组件的形式依附到资源实例上。相比传统游戏,Unity的两类资源(scene和prefab)不仅包括数据,还包括附加在资源上的类对象。也就是说,这两类资源的存储格式中存在唯一标识某代码类型的数据。混淆流程必须不破环这种对应关系才能使资源上的代码逻辑正确被执行。(Unity这样设计的意义并不是本文讨论的重点,而另一篇分享个人对Unity可视化编辑的理解的文章中将会详细说明。)
发布到Web的Unity项目,在生成播放器可执行包(*.unity)的接口中,将编译程序集和打包这两个步骤捆绑在的一起。我们没办法像普通.NET程序那样,对编译出的程序集进行混淆后再打到播放器可执行包中。
UnityEngine按函数名进行调用。MonoBehaviour是Unity引擎的一个重要的组件基类。其上的很多方法,Unity是通过方法名称进行访问的,如Awake、Start、Update等等。这些方法如果在混淆中被改名,将使方法调用失败。这个问题相对比较好处理,Dotfuscator的重命名功能提供了排除配置。我们只要得到继承于MonoBehaviour的所有类型,就能生成相应的排除配置,告知Dotfuscator不要对这些方法进行重命名。生成的配置节选如下[B3] :
<option>xmlserialization</option>
<excludelist>
<type name="CEventMgr|CGameRoot|…|…" regex="true" excludetype="false">
<method name="Update"regex="true" />
<method name="LateUpdate"regex="true" />
<method name="FixedUpdate"regex="true" />
<methodname="Awake" regex="true" />
<customattributename="System.Runtime.CompilerServices.CompilerGeneratedAttribute"regex="true" />
<method name=".*"regex="true" />
<field name=".*"regex="true" />
</type>
<type name=".*"regex="true">
<customattributename="ANoRenameInObfuscate" regex="true" />
</type>
<type name=".*"excludetype="false" regex="true">
<method name=".*"regex="true">
<customattributename="ANoRenameInObfuscate" regex="true" />
</method>
</type>
思路
何时混淆?由于Web项目编译和打包的过程是捆绑在一起的,官方没有提供独立的接口。(之前有跟官方反馈,但目前官方并没有提供具体计划。)想自己来分析官方的打包格式是行不通并且不太科学的。仅剩的办法就是自己将代码编译成DLL,混淆之后再添加到Unity项目中。
顺着这条思路,笔者在《QQ乐团》项目上作了尝试。将项目中所有执行相关的代码(不包括编辑器扩展的代码)移出,指定相关的Unity依赖库,编译成DLL。再将此DLL复制到原项目中。这时意料之中的事情发生了——项目中所有资源上的代码引用全部丢失。为了找到资源对代码的映射形式,笔者调整Unity编辑器的设定,将资源的序列化格式改为文本格式,并进行对比分析。发现资源中是通过一个GUID来对应具体代码的[B4] 。(如下)
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 100000}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID:11500000, guid: , type: 1}
m_Name:
mInt: 1
mFloat: .5
中的类型虽然还没有进行过混淆,但GUID已经发生了变化。将新的GUID替换到资源文件中,引用关系果然恢复了。
Unity引擎下的特殊问题都是可以解决的。于是顺着这思路,开发了若干工具,得到了前后GUID的对应关系,并扫描所有资源以进行GUID的替换。另一方面,在混淆之后,类型的变量名发生了改变,资源中变量名赋有具体的值,也需要替换资源中的变量名对应到混淆后的变量名。这一切花费了不少的精力,终于是把工具都做成了。
然而人算不如天算,最终导致此方案走进死角的是一个之前很难意料到的问题:Unity引擎在处理DLL中的模版类型时存在缺陷——DLL中的模版类型没有GUID,不能被资源所引用。这个问题在Unity官方网站上有少量反馈,而官方承认了这个bug,且没有给出解决方案。而《QQ乐团》的项目在UI操作上比较广泛地使用了模版类型,去除模版的使用谈何容易。就这样,这么一个不经意的问题为这个尝试的方向画上了句号。
“系着枷锁跳舞”,这句话是形容的是在各种条件约束下尽可能的追求解决方案的一种状态。总结之前的失败,最终还是找到了实际可行的改进方案,并成功应用到《QQ乐团》的Web版本和微客户端版本上。
最终的思路是将项目进行分层。独立出一个不被资源引用的,包含最敏感的协议解析和各个系统模块的“逻辑层”,将逻辑层的代码独立编译成一个DLL,进行混淆再包含到项目中。逻辑层之外的代码主要包括被资源引用到的,或是系统模块部分接口定义这样的不太敏感的内容,姑且称为“行为层”。为了让逻辑层可以独立编译,我们要求逻辑层可对行为层进行引用,而行为层则只能通过留在行为层的逻辑层接口访问逻辑层。这样我们就保护了我们最重要的代码,同时绕过了资源引用代码的问题。
这个方案对项目架构提出了一定的要求。一是要求敏感代码和资源保持独立,需要一个框架来加载各个模块,而不是直接将模块代码直接附在场景物体的资源中。二是要求层次清晰,不允许反向依赖。有利于《QQ乐团》项目的消息是,《QQ乐团》从最早期就实现了一个较清晰的架构管理方法。因此花费了一定的时间进行分层,和实现接口访问机制后,就成功执行了这个方案。
实际混淆步骤。《QQ乐团》是使用VisualBuild来执行版本构建和发布流程的。以下介绍版本构建中混淆相关的流程:
从Unity项目的Assets目录中拷贝出逻辑层的代码目录(CodeGameLogic)。和编辑器扩展代码(避免混淆后编辑器扩展代码对逻辑层的依赖丢失导致编译出错)。
调用Unity.exe命令行编译剩余的行为层部分:
这个函数实际执行了:
BuildPipeline.BuildPlayer(new string[] {"Assets/obfuscated.unity" }, "WebPlayerObfuscated",
BuildTarget.WebPlayer, BuildOptions.None);
Editor程序集(也就是编辑器扩展程序集)时编译失败,中断编译过程,避免在BuildPlayer过程结束时构建生成的DLL被清理掉。BuildPlayer之前故意在Editor目录下弄一个错误的代码文件即可。
将生成的行为层DLL拷贝到逻辑层构建目录。行为层DLL的路径是在项目的Library/ScriptAssemblies下,有Assembly-CSharp.dll和Assembly-CSharp-firstpass.dll两个文件。另外也拷贝逻辑层依赖的其它DLL到构建目录,包括UnityEngine.dll,以及项目Plugins目录下的依赖库。
调用Mono的编译器mcs编译逻辑层DLL——CodeGameLogic.dll。编译命令如下:
生成DotObfuscator的配置文件”WebCfg.xml”。这里是用自己编写的工具,扫描CodeGameLogic.dll中的类型,得到不能被混淆的类型名和方法名,加入到配置文件的排出列表中。如“三。3”小节所示。
调用DotObfuscator对CodeGameLogic.dll执行混淆,得到混淆后的CodeGameLogic.dll:
将混淆后的CodeGameLogic.dll拷贝到项目中,然后构建项目。这里要注意的是,如果是构建Web项目,需要将dll拷贝到Plugins目录。如果是Standalone(即客户端)项目,直接拷贝到Assets目录下即可。另外,这次构建是不可以有编译错误的,所以第1部需要移除Editor目录下的编辑器扩展的代码。
接下来将构建好的项目与资源合并,就可以得到完整的混淆版本。
总结:
Unity项目的代码反编译较为容易。需要在重视代码混淆工作。
Unity项目的代码混淆方案实施起来限制较多。本文介绍的方案是笔者知晓的目前唯一可用的混淆方案。对项目的架构分层有强制性的要求。最好是在项目初期就考虑如何对项目进行分层,将需要保护的内容放置在被混淆的层中。

8. C#写出来的代码,反编译之后能看到源代码,怎么样防止别人的反编译。求高手指点

C#代码最终会被编译为 IL,对 IL 进行逆向工程比较简单,因此一种办法是向第三方购买一个混淆器(obfuscator),能通过打乱程序集元数据中的私有符合名称,让人难以阅读。但本质上,这种保护是有限的,只是难以阅读,而不能从根本上避免。
另一种办法是,在非托管模块中实现你比较重要的算法,然后通过 CLR 的平台互操作,来使托管代码调用它,这样程序仍然能够正常工作,但对非托管的本地代码进行反编译,就很困难。
一般来说,除非你的这部分代码非常重要,或涉及核心机密,才需要考虑防止反编译的做法。一般来说,混淆器也足够了。

9. e语言编写的exe程序 如何反编译成源码.

这个是目前没有办法实现的。

反编译一般指反向编译指计算机软件反向工程(Reverse engineering)也称为计算机软件还原工程,是指通过对他人软件的目标程序(可执行程序)进行“逆向分析、研究”工作,以推导出他人的软件产品所使用的思路、原理、结构、算法、处理过程、运行方法等设计要素,某些特定情况下可能推导出源代码。反编译作为自己开发软件时的参考,或者直接用于自己的软件产品中。反编译是一项艰巨而复杂的工作。

如果e语言反编译需要用到的技术过于繁杂,目前开源的资料中并没有可以准确反编译的软件。

自行尝试需要进行“逆向分析、研究”工作,以推导出他人的软件产品所使用的思路、原理、结构、算法、处理过程、运行方法等设计要素。

10. 怎样使用E-Code Explorer进行反编译易语言编译的exe程序查看源码

E-Code Explorer好像是很久以前的了,只能反编译那个时期的易语言版本写出来的程序,很久前就不能用了,放弃把~自己编写吧~~

热点内容
app什么情况下找不到服务器 发布:2025-05-12 15:46:25 浏览:714
php跳过if 发布:2025-05-12 15:34:29 浏览:467
不定时算法 发布:2025-05-12 15:30:16 浏览:131
c语言延时1ms程序 发布:2025-05-12 15:01:30 浏览:166
动物园灵长类动物配置什么植物 发布:2025-05-12 14:49:59 浏览:736
wifi密码设置什么好 发布:2025-05-12 14:49:17 浏览:148
三位数乘两位数速算法 发布:2025-05-12 13:05:48 浏览:398
暴风影音缓存在哪里 发布:2025-05-12 12:42:03 浏览:544
access数据库exe 发布:2025-05-12 12:39:04 浏览:631
五开的配置是什么 发布:2025-05-12 12:36:37 浏览:365