首页 > 编程语言 >如何把.net应用程序防止他人反编译,dll打包并搭建成一个合格的安装包

如何把.net应用程序防止他人反编译,dll打包并搭建成一个合格的安装包

时间:2023-08-03 17:33:34浏览次数:43  
标签:反编译 应用程序 next 文件夹 dll 安装包

背景知识:

在理论上,任何 .NET 程序集(.dll 文件或 .exe 文件)都可以被反编译。C# 是一种托管语言,其代码编译成中间语言 (IL) 或称为 CIL(Common Intermediate Language),然后在 .NET 运行时中执行。反编译工具可以将 IL 代码还原回 C# 源代码,使得原本的 C# 代码可以被查看和修改。

 

最近我的一个WPF应用程序已经写完了,一个exe程序也能正常跑起来,但是bin/debug目录下用到的外部dll过多了,看上去就不好看,而且会被反编译。

工作需求:

1、C#应用程序生成的dll最好隐藏起来,且要防止别人反编译。

2、整个程序打包成一个安装程序,方便别人安装部署

 

实现步骤:

1、将bin/debug下的许多dll封装成一个dll

所需nuget包:Costura.Fody

未安装Fody包前的bin/debug目录结构

 

 可以看到有很多dll

 

安装好nuget包后,重新生成下程序

 立马就只剩应用程序名.dll 了,注意这里的runtimes文件夹不能删,也不能改名,否则程序无法正常运行。

现在把这个文件夹里所有文件复制到任何地方都可以正常运行了,且用ILSPY等反编译工具无法编译出源代码。

 

2、实现了dll的打包,接着要继续实现应用程序的打包,将exe等依赖都打包在一个安装包里

  下载Inno

下载地址:http://www.jrsoftware.org/isinfo.php

找到Download Inno Setup,下载,目前安装包版本是innosetup-6.2.2

安装就正常安装就行。

1、安装完成打开Inno Setup Compiler应用程序,如果有一个窗口打开请关闭它。

2、左上角File——>New——>不打勾,next——>依次填你的应用程序名、版本、发布者名以及发布者网站(随便写,后续你鼠标悬浮安装包后会显示这个tooltip),

3、填好之后next——>这个界面是写存放生成安装包的文件夹名(随便写),next,

最关键的一步,放exe文件和所需的依赖文件/依赖文件夹,记住一定要把runtimes文件夹添加上。如下图:

这里还有个细节,我把runtimes文件夹复制到了AAA文件夹下,这个看上去比较奇怪,但最好这么做。

添加好后next下一步

4、下一步我也不太懂啥意思,但我没打勾选择跳过,next——>这个界面是配置是否配置快捷方式等,建议勾上uninstall,方便程序的卸载,next下一步——>
5、许可证文件,放一些信息的,就是同意协议什么的,你可以放txt文件,也可以放高级一点的rtf文件。next下一步——>

6、install mode,就是选择安装的权限限制,默认是Administrator权限,next下一步——>

7、选择语言,我没找到中文的,就选择了英文,next下一步——>

8、这个界面是写存放安装包文件夹的地址,待会生成的安装包就放在你写的这个地址处,还有可以配置安装包的图标icon,需要.ico文件,next下一步——>

9、这个我没打勾,不太懂,后面next都选是是是,生成了一个*.iss文件,要你起个文件名,随便弄个就行。

10、如果正常的话,inno会编译并显示*** Finished.  [**时间 elapsed],成功将应用程序打包成一个安装程序了。

 

 

 大功告成,你可以双击来安装这个应用程序了。

 

如有疑问,请大家积极评论,我会尽我所能解答的。

 

标签:反编译,应用程序,next,文件夹,dll,安装包
From: https://www.cnblogs.com/lordxinwei/p/17603823.html

相关文章

  • PL安装包软件下载PL软件下载及安装教程 官方版特色
    AdobePrelude是一款功能丰富的前期制作工具。它的素材导入和整理、标注和注释、剪辑和剪裁、元数据管理、媒体转码和预览以及与其他Adobe应用程序的集成等特点,使用户能够高效地管理和准备视频素材,为后续的编辑和制作工作打下坚实的基础。无论是个人创作者还是专业团队,都能从Ad......
  • c#的dllimport使用方法详解
    关于“C#的DllImport使用方法详解”的攻略如下:简介DllImport是C#中一个用于调用非托管代码的方法。它可以让我们在C#代码中调用一些使用一些C++或Win32API等编写的代码。使用方法DllImport的用法非常简单,我们只需要使用指定DllImport特性来声明一个需要调用的函数,然后在代码......
  • 调试dll程序
    dll需要被exe调用才能进入dll程序,因此VS的dll项目属性里——配置属性,调试——命令里输入exe的路径,运行dll项目即可(注意把dll项目生成的dll、lib、pdb三个文件放到exe路径里)如果exe通过ini等配置文件指定了调用的dll路径,那就把dll、lib、pdb三个文件放到指定的路径里。例如,现在有......
  • CentOS使用yum安装包报错No more mirrors to try解决方法
    报错如下Loadedplugins:fastestmirror,update-motdLoadingmirrorspeedsfromcachedhostfilehttp://mirrors.163.com/centos/7-7.1908.0.el7.centos/os/x86_64/repodata/repomd.xml:[Errno14]HTTPError404-NotFoundTryingothermirror.Toaddressthisissue......
  • 国标GB28181视频平台LntonGBS(源码版)国标平台出现报错“缺失dll文件”的问题解决方案
    LntonGBS是基于国标GB28181协议的视频云服务平台,它可以支持国标协议的设备接入,在视频能力上能实现直播、录像存储、检索与回放、云台控制、告警上报、语音对讲、平台级联等功能,既能作为业务平台使用,也能作为能力层平台调用。技术人员在用户服务器部署LntonGBS平台,提示缺失某个dll文......
  • win10最新版apktool 反编译
    apktool_2.6.0.jar 改成apktool.jar和apktool.bat放在同一个文件夹,并将此文件夹加入系统变量Path(D:\SoftWare\apktool)apktool.bat:@echooffsetlocalsetBASENAME=apktool_chcp650012>nul>nulsetjava_exe=java.exeifdefinedJAVA_HOME(setjava_exe="%JAVA_HOME%\b......
  • 《dll篇》c#调用c++dll
    c#调用c++dll参考链接:https://jingyan.baidu.com/article/5d6edee2da72d699eadeecfe.html生成dll环境:VS2008新建项目->VisualC++->Win32项目MyDLL注意:C++编写的dll一般是不能直接拿来C#调用,需要先新建个C++的工程把dll里的方法重新封装成可被C#外部调用的函数。MyDLL.cp......
  • WCF无法加载DLLImporte的dll(focas)
    WCF无法加载DLLImported的dll尝试将外部DLL放到路径C:\Windows\SysWOW64\inetsrv  DllImport1.托管代码与非托管代码在学习DllImport方法之前,先了解下托管代码和非托管代码的概念。我们编写的C#代码(不只是C#,也包括.net平台上的其他语言,如VB,J#等),首先经过编译器把代码编译......
  • VC6.0 dll debug
    现象是用debug中的stepinfo或者runtocursor合着设置断点会出现Oneormorebreakpointscannotbesetandhavebeendisabled. Executionwillstopatthebeginningoftheprogram.解决方法,1.在project->setting->c/c++-general->debuginfo->programdatabsefored......
  • 通过替换dll实现后门功能的恶意代码
    通过替换Kernel32.dll来实现的后门功能的恶意代码。该恶意代码存在一个exe可执行文件和一个dll动态链接库,需要分别进行分析一.待解决问题这个恶意代码执行了什么功能?通过什么方式实现其功能?如何实现长久驻留?有什么关键特征,或者说这一类恶意代码有什么关键特征?如何清除该恶......