NSIS反编译器

2023-12-31

任何熟悉 NSIS 反编译器的人(谷歌不是:-))

谢谢, 乙


如何访问 NSIS 安装程序脚本?

好吧,这就是这篇文章的大主题。

http://netcologne.dl.sourceforge.net/project/nsis/NSIS%202/2.09/nsis-2.09-src.tar.bz2 http://netcologne.dl.sourceforge.net/project/nsis/NSIS%202/2.09/nsis-2.09-src.tar.bz2

nsis-2.09-src\Source\exehead\fileform.c
nsis-2.09-src\Source\exehead\fileform.h

#define FH_SIG 0xDEADBEEF

// neato surprise signature that goes in firstheader. :)
#define FH_INT1 0x6C6C754E  // 'Null'
#define FH_INT2 0x74666F73  // 'soft'
#define FH_INT3 0x74736E49  // 'Inst'

typedef struct
{
  int flags; // FH_FLAGS_*
  int siginfo;  // FH_SIG

  int nsinst[3]; // FH_INT1,FH_INT2,FH_INT3

  // these point to the header+sections+entries+stringtable in the datablock
  int length_of_header;

  // this specifies the length of all the data (including the firstheader and CRC)
  int length_of_all_following_data;
} firstheader;

数据样本:

$ ==>  00000000  ....
$+4    DEADBEEF  
$+8    6C6C754E  Null
$+C    74666F73  soft
$+10   74736E49  Inst 
$+14   000268E2            157 922  length_of_header (inside <<Compressed Data>>)
$+18   011947CB         18 433 995  length_of_all_following_data
       <<Compressed Data>>

$+011947CB CRC32

获取未压缩的>

好吧,这个数据被写入%temp% 但是,如果 ShareMode=None 且 Attributes = DELETE_ON_CLOSE,则您无法访问它。

Fix:
    Inside 'NSIS Setup.exe'
Replace 
    68 00 01 00 04 with
    68 00 00 00 00
    To avoid that this tempfile get's create with DELETE_ON_CLOSE

Background:

    00402E56  |.  68 00010004   PUSH    4000100                          ; |Attributes = TEMPORARY|DELETE_ON_CLOSE
                  ^^^^^^^^^^^-Patch Target
    00402E5B  |.  6A 02         PUSH    2                                ; |Mode = CREATE_ALWAYS
    00402E5D  |.  53            PUSH    EBX                              ; |pSecurity
    00402E5E  |.  53            PUSH    EBX                              ; |ShareMode
    00402E65  |.  68 000000C0   PUSH    C0000000                         ; |Access = GENERIC_READ|GENERIC_WRITE
    00402E6A  |.  50            PUSH    EAX                              ; |FileName
    00402E6B  |.  FF15 90704000 CALL    [<&KERNEL32.CreateFileA>]        ; \CreateFileA

好吧,那个大 未压缩的临时文件是这样开始的:

00000000   E2 68 02 00 A0 00 00 00  2C 01 00 00 08 00 00 00  2C   âh      ,       ,

E2 68 02 00 -> 000268E2 157 922 length_of_header (内)

只需剪切这个数据块,我们就可以将 NSIS 脚本作为未压缩的原始脚本

其余数据是 7z 将为您提取的数据文件。

更新:获取通用提取器 http://legroom.net/software/uniextract

It uses

cmdTotal 1.02 (c) 2006/2007 KaKeeware, http://www.kakeeware.com

带插件:InstExpl.wcx http://www.totalcmd.net/plugring/installexplorer.html

或多或少成功地提取了 Nullsoft Setup.exe。 小心不要太相信提取的文件 - 有些东西已损坏。 (为此更喜欢 7zip。) 然而该程序的主要内容是脚本文件这是我在 3-4 示例中测试的,状态良好。 :)

Okay an update: 这是我的一个非常早期的版本Nullsoft 反编译器 1.2 alpha http://deioncube.in/files/cw2k/Nullsoft%20Installer%20Decompiler/nsiDecomp%232.7z

目前它仍在大力开发中,但这是它的第一个未完成的原始版本。

UPDATE(About a year later): NullsoftDecompiler 3 http://sourceforge.net/projects/nsidis/ Decompiled output from nsiDecomp in Notepad++ Finally I added decompression support.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NSIS反编译器 的相关文章

  • msi 安装程序运行两次

    我有一个通过 msi 安装的程序 msi 是使用 VS2008 部署项目构建的 并具有在安装完成后运行该程序的自定义操作 一旦 msi 运行 我可以简单地更新版本号 生成新的产品代码 并且 msi 可以在同一台 PC 上再次运行 但是 我想
  • MSI 安装程序错误 2810 中断安装,但仍然顺利完成

    我创建了一个安装应用程序的设置 并且仍然如此 但它最后开始突然发出奇怪的警告 因此 当安装过程完成时 会出现以下内容 安装程序在安装此软件包时遇到意外错误 这可能表明此包有问题 错误代码是2810 于是我查了2810 上面写着 在对话框 2
  • MSDeploy 是否足够“友好”,或者可以将其封装在 MSI 文件中

    您认为 MSDeploy 包是让最终用户在其系统上安装 Web 应用程序的一个不错的选择吗 与使用 MSI 文件安装 Web 应用程序的体验相比如何 有人尝试过将 MSDeploy 包封装在 MSI 包中吗 会起作用吗 据我描述 MSDep
  • 如何在 NSIS 中使用 try catch

    您好 我在安装时在 nsis 安装程序中的几台机器上遇到了奇怪的错误 使用 fontreg nsh 安装字体时给出 无效的 win32 文件句柄 我试过谷歌但没有得到这个问题的答案 现在我正在考虑抑制此消息 那么有什么方法可以抑制此消息 或
  • Windows 安装程序中的主要与次要升级

    是否有任何理由不设置安装 以便始终完成主要升级并更改产品代码 我发现支持不同类型的安装需要更多代码 并且 修复 安装似乎通过重大升级更容易工作 而且需要安装的应用程序不是很大 因此不需要 服务包 或补丁安装程序 不会 如果您的应用程序很小并
  • 在 Windows 7 中安装/卸载服务:“错误 1001。指定的服务已标记为删除”

    我目前正在 NET 4 0 Visual Studio 2010 Windows 7 32 位中开发 Windows 服务 我有一个安装程序项目可以为我进行安装 当我安装该服务 卸载它并尝试再次安装时 出现以下错误 错误1001 指定的服务
  • 如何使用 WiX 将交互式用户添加到本地化 Windows 中的目录?

    如何添加瑞典语交互式用户 NT INSTANS INTERAKTIV 或英文交互用户 NT AUTHORITY INTERACTIVE 或任何其他本地化用户组write程序文件夹 ACL 的权限 这个问题实际上是 我如何使用安全对象 我无法
  • 对于 msiexec,这些定向到安装程序的不同方法有什么区别?

    我有一个简单的问题 我只找到了两种实际运行我的 msi 文件的方法 但它们都不起作用 密切关注我的使用情况 and 简而言之 我想要一种方法来做到这一点 Basics PSScriptRoot Start Process msiexec e
  • 无法再卸载 Visual Studio 2017

    我在运行最新的 VS2017 时遇到了严重的问题 因为在我升级它时它进入了不一致的状态 有一些残留的软件包拒绝卸载 因为它们显然缺少来自的缓存文件C Windows Installer文件夹 我从来没有碰过那个文件夹 然而 我确实移动了C
  • 如何确定现有应用程序的安装范围?

    我有一个基于的安装程序WixUI Advanced允许用户选择安装范围 每个用户或机器范围 升级时 安装了较低版本的现有应用程序 我想隐藏安装范围屏幕并自动选择他们上次选择的安装范围 如何判断先前安装使用的安装范围 Edit 查看我的 MS
  • 如何编写自定义操作 DLL 以在 MSI 中使用?

    这是我打算自己回答的问题 但请随意添加其他方法来完成此任务 我正在打包一个应用程序以用于各种配置 并且我确定在 MSI 中执行自定义逻辑的最可靠方法是编写我自己的自定义操作 DLL 该 DLL 能够从 PROPERTY 表中读取 写入 终止
  • 如何使用 msi 安装程序部署 VBA Excel 加载项 (foo.xlam)?

    我是一名 C 开发人员 正在将同事的 VBA Excel 加载项 xlam 文件 与我的 msi 安装程序 使用 VS 部署项目构建 如果重要的话 捆绑在一起 xlam 放置在应用程序文件夹 C Program Files x86 MyCo
  • Windows 安装程序和安装应用程序合并到一个文件中?

    我使用 Visual Studio 在 C 中编写了一个应用程序 我创建了一个项目设置文件 该文件在我的调试中为我创建了文件 Windows Installer 和安装应用程序都是必需的 但我想将它们合并为一个 就像当您下载应用程序时 安装
  • Google Cloud SDK 安装失败 UnicodeDecodeError:“ascii”编解码器

    我在安装时遇到以下错误谷歌云SDK https cloud google com sdk docs 在我的 Windows 10 计算机上 ERROR gcloud failed to load ascii codec can t deco
  • Wix:动态添加功能

    我们正在使用 Wix 为我们的软件构建 msi 我们有一些要在目标机器上实现的组件 插件 每个客户端的插件都不同 我们想要做的是创建一个标准构建并修改 msi 包中的功能列表 有没有办法通过自定义操作动态更改功能列表 例如 从自定义操作中读
  • msinfo32 无法在 Windows XP 下的 NSIS 中运行

    以下 NSIS 行由于某种原因拒绝在 Windows XP 下运行 立即返回 ExecWait PROGRAMFILES Common Files Microsoft Shared MSInfo msinfo32 report DESKTO
  • Installshield 在次要升级时不更新相关 DLL

    我目前正在使用 InstallShield 部署 NET Winforms 应用程序 我是 InstallShield 的新手 不太喜欢学习过程 Winforms 应用程序具有三个相关的 DLL 这些 DLL 在次要升级期间不会更新 例如
  • Wix - 自定义安装目录

    我使用的是 Wix 3 x 用户应该能够选择目标目录 我的Setup wxs目前是这样的 http pastebin com uH1EjbDQ http pastebin com uH1EjbDQ 询问用户自定义目标目录的最简单方法是什么
  • 如何使用 NSIS 脚本检测 Windows 32 位或 64 位?

    我已经为java项目编写了nsis脚本 我的项目中有批处理文件 我已经为常见的Windows 32位和64位编写了批处理文件 安装后我已经使用自动启动批处理文件Exec命令 它在 32 位 Windows 中工作正常 但同时这在 64 位
  • 为什么最新的 Python 3.8.x 版本不提供 Windows 安装程序?

    我需要在Windows计算机上安装Python 3 8并希望使用最新的小版本3 8 12 https www python org downloads release python 3812 官方发布网页提供了源代码的 tarball 文件

随机推荐