一点关于dll和exe的小研究和小失败

 

今天我用c#自己编写了一个dll文件,并执行。同时用CE在一个调用了dll的exe执行时成功了修改了内存数据(必然用了小小的技巧跟踪了一下找到了变量的内存地址,应该是逻辑地址)。但是直接用CE查找dll文件时,却跟踪不到那个变量。我是给那个变量一个初始值,然后查找初始值,但是却找不到。而在跟踪exe时,我在那个变量每次自增1时(当然是我在dll里自己设定的),scan一次,scan了几次之后就找到了。这有点郁闷。

       后来我继续网上查了资料。发现修改war3内存数据有两种方式,一是直接修改dll,而是在exe运行时修改内存数据。而这两种方式中的地址有这种映射关系,就是加载dll会给dll模块一个模块基地址gameaddr,也称加载地址。我想是这样的:加载地址+数据在dll的相对地址=数据的内存地址(这应该可以验证的)。但是这还是解释不了我上面的那个问题。难道是因为c#编的dll跟原来实质的dll有所区别而造成的?

DLL-FiLes com Fixer 3.3.9 中文特别版能够扫描您系统的注册表错误。这些错误通常源自您的电脑上已安装和/或已卸载的各种软件。它们常常是电脑速度变慢的原因。深入扫描、描、清理和优化您的注册表,以便提升您的电脑性能。 DLL-FiLes com Fixer 中文版DLL-FiLes com Fixer 中文版 DLL-FiLes com Fixer 3.2 中文注册版提供了全面的备份和还原支持。如要回到任何先前的配置,只需从备份注册表列表中选择一个项目,然后单击”还原”按钮以便开始还原过程; 安装DLL文件:输入你想要安装的DLL文件名,在互联网上搜索并下载想要的DLL文件 与系统相关的错误; 影响电脑上所有用户配置文件的错误; Com和ActiveX 错误错误; 与Com和Active组件相关的错误; 记和卸载错误,与启动和卸载有关的错误,影响你个人配置文件的错误 DLL-files Fixer 高级版的 优点 可以消除 .dll 相关错误,确保软件运行顺畅。 可以消除 .dll 相关弹出式系统错误消息。 可以修复注册表,并且清除其中的恼人和无效注册表项。 可以通过没有错误的干净注册表优化个人电脑性能,提高系统速度。 对注册表进行碎片整理以减少开机时间及降低内存使用。 可以防止应用程序和个人电脑崩溃。 修复长期使用带来的问题。 12-个月, 24-个月, 36-个月 的许可证 容易使用的二合一界面。 注册方法 DLL-files Fixer 启动 DLL-Files Fixer 软件 点击位于右上角的“现在注册”标签 3. 从您的付款确认邮件里复制许可证号,粘贴到最上面的区域,并单击“现在注册”按钮 4. 立即就能使用此程序的所有特性!
### 回答1: 将.NET DLLEXE合并是一种将DLL(动态链接库)和EXE(可执行文件)文件进行合并的技术。这种合并可以实现.NET应用程序的简化和优化。 通过合并DLLEXE文件,可以将应用程序的所有依赖项包含在一个单独的可执行文件中,而不需要额外的DLL文件。这种合并有以下几个优点: 1. 简化部署:合并后的文件可以更容易地进行部署和分发,因为只需要一个文件即可。 2. 提高性能:合并后的文件可以减少程序的启动时间和加载时间,因为不再需要在运行时从外部DLL加载代码和资源。 3. 防止依赖关系冲突:合并后的文件可以避免由于不同版本的DLL之间存在冲突而导致的问题。所有必需的代码和资源都包含在一个文件中,可以确保它们之间的兼容性。 4. 保护源代码:合并后的文件可以更好地保护.NET应用程序的源代码,因为它们将不再以可访问的DLL形式存在。 要实现DLLEXE的合并,可以使用一些工具或技术,如ILMerge、Costura.Fody等。这些工具可以将DLLEXE文件合并成一个单独的可执行文件。可以在构建过程中使用这些工具,或者手动执行它们来完成合并操作。 总而言之,将.NET DLLEXE合并可以简化部署,提高性能,避免依赖关系冲突,并保护源代码。这是一个优化和改进.NET应用程序的有效方法。 ### 回答2: 将.NET DLLEXE合并是指将DLL文件与EXE文件合并为一个单独的可执行文件。这种操作主要有两个目的:减少文件数量和简化部署过程。 首先,通过将DLLEXE合并为一个文件,可以减少文件数量。原本,一个应用程序可能需要依赖多个DLL文件才能正常运行,这样就导致了文件过多的问题,给文件的管理和部署带来了一定的困扰。而将DLLEXE合并为一个文件后,就避免了这个问题,只需要一个文件就能完整地运行应用程序,简化了文件的管理和维护。 其次,将DLLEXE合并为一个文件还能简化部署过程。在原本的情况下,需要将DLL文件与EXE文件分开部署,并且还需要将DLL文件正确地放置在应用程序的搜索路径中,否则应用程序无法找到所需的DLL文件,导致运行失败。而合并后的文件就不存在这个问题,只需要将一个文件部署到目标系统中即可,无需额外的配置和指定搜索路径。 但需要注意的是,合并DLLEXE也有一些潜在的问题。首先,合并后的文件体积会比原来的文件大,这会增加程序的加载时间和磁盘占用空间。其次,如果需要更新DLL文件,合并后的文件就需要重新打包和部署,而不像原来的方式只需要替换对应的DLL文件即可。 综上所述,将.NET DLLEXE合并为一个文件可以减少文件数量和简化部署过程,但也带来了一些潜在的问题需要考虑。根据具体情况,可以选择是否进行合并。 ### 回答3: 将.NET的dll(动态链接库)和exe(可执行文件)合并是通过使用ILMerge工具来实现的。ILMerge是一个独立的命令行工具,用于将多个.NET程序集合并为单个程序集。 使用ILMerge合并dllexe可以有以下几个好处: 1. 减少部署的文件数量:将多个dll合并为一个dll,或者将多个dllexe合并为一个exe,可以减少需要部署的文件数量,简化部署过程。 2. 提高应用程序的运行效率:合并dllexe可以减少程序的加载时间和启动时间,提高应用程序的运行效率。 3. 避免版本冲突:将不同版本的dll合并为一个程序集,可以避免版本冲突问题,确保程序能够正确加载所需的函数和方法。 4. 保护源代码:合并dllexe可以将源代码打包到一个文件中,使得源代码不容易被反编译或者修改。 使用ILMerge合并dllexe的步骤如下: 1. 下载并安装ILMerge工具。 2. 打开命令行工具,进入到ILMerge的安装目录。 3. 使用以下命令进行合并操作: `ILMerge.exe /out:MergedAssembly.exe PrimaryAssembly.exe SecondaryAssembly.dll` 其中,MergedAssembly.exe是合并后生成的新的exe文件名,PrimaryAssembly.exe是主程序集的文件名,SecondaryAssembly.dll是次要程序集的文件名。 4. 执行命令后,ILMerge将会合并指定的程序集,生成一个新的exe文件。 5. 使用合并后的新的exe文件进行部署和运行。 需要注意的是,合并dllexe可能会导致一些依赖关系和引用路径的问题,因此在进行合并操作前,需要仔细检查和解决这些问题,确保程序能够正确运行。此外,合并dllexe可能会使得调试和更新程序变得更加困难,因此在合并前需要权衡利弊,选择合适的方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值