
开发工具逆向工程【免费下载链接】hactoolhactool is a tool to view information about, decrypt, and extract common file formats for the Nintendo Switch, especially Nintendo Content Archives.项目地址https://gitcode.com/gh_mirrors/ha/hactool点击查看免费下载导读mbedtls/README.md 是 hactool 仓库内嵌的 mbed TLS 加密库的官方构建与配置文档。hactool 作为一个 Nintendo Switch 文件格式NCA、XCI、PFS0、RomFS 等查看、解密与提取工具其全部 AES、SHA-256、HMAC、RSA 与 CMAC 密码学能力都来自这份随仓库携带的 mbed TLS 2.6.1 源码树。读完本文你将掌握 hactool 从顶层make到 mbed TLS 内部库依赖的全部构建链路学会用config.pl脚本裁剪功能开关、用 Make/CMake/Yotta 三种方式编译出libmbedcrypto、libmbedx509、libmbedtls三个库并了解其自测套件的生成与运行机制。一、定位hactool 为什么自带一份 mbed TLShactool 顶层 Makefile 的第一行就是include config.mk其all目标第一步执行$(MAKE) -C mbedtls lib也就是先在本仓库的mbedtls/目录内编译出三个静态库再链接出hactool可执行文件。配套的 config.mk.template 中写明了链接参数CC gcc CFLAGS -O2 -Wall -Wextra -pedantic -stdgnu11 -fPIC LDFLAGS -lmbedtls -lmbedx509 -lmbedcrypto链接顺序-lmbedtls -lmbedx509 -lmbedcrypto正是 mbed TLS README 反复强调的依赖方向libmbedtls依赖libmbedx509与libmbedcryptolibmbedx509又依赖libmbedcrypto。GNU 链接器对库顺序敏感如果颠倒顺序就会产生未解析符号错误。从源码可以清楚看到 hactool 对这三层库的实际使用sha.h 直接#include mbedtls/md.h其hash_type_t枚举直接映射到MBEDTLS_MD_SHA1/MBEDTLS_MD_SHA256sha.c 中通过mbedtls_md_setup、mbedtls_md_starts、mbedtls_md_hmac_starts完成 SHA-256 摘要与 HMAC 计算aes.h 使用mbedtls_cipher_context_t与mbedtls/cmac.h负责 NCA 内容解密与密钥派生rsa.c 使用mbedtls_mpi大数运算完成 RSA-2048 签名验证。本仓库携带的 mbed TLS 版本为2.6.1见 version.h 中的MBEDTLS_VERSION_STRING。二、配置config.h与scripts/config.plmbed TLS 官方宣称开箱即用平台相关的可选项与功能开关全部集中在 include/mbedtls/config.h共约 2700 行内含大量\def文档注释。该文件可以通过两种方式修改手工编辑直接打开config.h注释或取消注释#define行脚本化修改使用 scripts/config.pl 进行程序化控制。config.pl支持四个核心命令完整用法可用--help查看命令作用示例set symbol [value]取消注释某#define可附带取值符号不存在时默认报错加-o/--force则在文件末尾追加scripts/config.pl set MBEDTLS_SHA256_Cunset symbol注释掉指定#definescripts/config.pl unset MBEDTLS_SSL_DTLS_ANTI_REPLAYget symbol查询符号是否已定义定义则打印取值找到退出码 0未找到退出码 -1scripts/config.pl get MBEDTLS_VERSION_MAJORfull将config.h中Module configuration options之前的所有#define全部打开但排除一批保留符号如MBEDTLS_TEST_NULL_ENTROPY、MBEDTLS_HAVE_SSE2、各种_ALT结尾符号等scripts/config.pl fullrealfull与full相同但不做任何排除scripts/config.pl realfullconfig.pl也接受-f file指定配置文件路径默认include/mbedtls/config.h且允许从项目根目录或scripts/目录运行。这里要特别留意full模式的保留名单其中MBEDTLS_TEST_NULL_ENTROPY是最危险的一项它表示无任何熵源仅供开发测试使用。Makefile 的post_build目标与顶层 CMakeLists.txt 都会在构建时调用config.pl get MBEDTLS_TEST_NULL_ENTROPY做检查一旦命中就会打印醒目的警告横幅**** WARNING! MBEDTLS_TEST_NULL_ENTROPY defined! **** **** THIS BUILD HAS NO DEFINED ENTROPY SOURCES **** **** AND IS *NOT* SUITABLE FOR PRODUCTION USE ****CMake 下若检测到该开关且未显式传入-DUNSAFE_BUILDON构建会直接FATAL_ERROR终止。使用configs/中的非标准配置仓库 mbedtls/configs/ 提供了一批面向特定使用场景的精简配置例如config-mini-tls1_1.h最小化 TLS 1.1、config-suite-b.h仅 Suite B 密码套件、config-no-entropy.h无熵源、config-thread.h线程支持等。这些文件是config.h的完整替代品有两种启用方式直接替换把选中的配置复制为include/mbedtls/config.h注意根据编译器调整其中的#include mbedtls/check_config.h一行不改文件、只改宏通过定义MBEDTLS_CONFIG_FILE并调整头文件搜索路径例如 Make 下CFLAGS-I$PWD/configs -DMBEDTLS_CONFIG_FILEfoo.h makefind . -iname *cmake* -not -name CMakeLists.txt -exec rm -rf {} CFLAGS-I$PWD/configs -DMBEDTLS_CONFIG_FILEfoo.h cmake . make第二种方法同样适用于把自定义配置文件放在 mbed TLS 源码树之外的情形而且无需改动仓库文件。三、构建系统总览四种方式与三个库README 明确列出了 mbed TLS 版本中活跃的四套构建系统Yottambed OS 16.03 的构建系统提供极简配置文件示例与测试可能依赖 mbed OS 特性Make开发主用系统功能完整、保持最新CMake开发主用系统功能完整、保持最新Microsoft Visual StudioVS6 与 VS2010其余系统应反映 Make/CMake 的全部变更但新特性不一定自动移植。Make 与 CMake 都会产出三个库libmbedcryptoAES、SHA、RSA、MPI 等纯密码学、libmbedx509证书解析与签名、libmbedtlsTLS/DTLS 协议。依赖关系为libmbedtls → libmbedx509 → libmbedcrypto这与上一节 hactool 的链接参数一一对应另外当用dlopen()动态加载共享库时必须先加载 libmbedcrypto再加载 libmbedx509最后才能加载 libmbedtls。四、Make 构建从单库编译到 hactool 全量构建4.1 基础命令在mbedtls/目录下make # 编译库与全部示例程序 make check # 运行测试测试需要 Perl 参与生成 make no_test # 跳过测试生成只编译库与程序 programs/test/selftest # 无 Perl 时可运行的自检程序小型测试集mbed TLS 的 Makefile 刻意只使用最小化的 Make 语法因为不同平台/不同实现BSD make、GNU make对高级特性支持不一因此个别平台可能需要手动修改 library/Makefile、programs/Makefile 或 tests/Makefile。4.2 平台与构建变量变量作用WINDOWS_BUILD1目标是 Windows 但构建环境是类 Unix交叉编译、MSYS shell时使用共享库后缀变为dllWINDOWS1构建环境本身就是 Windows shell如 mingw32-make时使用此时部分目标不可用SHARED在静态库之外额外构建共享库libmbedtls.so.10、libmbedx509.so.0、libmbedcrypto.so.0OSX 为.dylibDEBUG追加-g3调试符号CFLAGS/LDFLAGS可在环境或命令行覆盖覆盖后-I等必要参数仍会被保留WARNING_CFLAGS独立覆盖告警选项默认-Wall -W -Wdeclaration-after-statement例如 debug 构建make DEBUG1共享库构建make SHARED1。4.3 与 hactool 顶层构建的整合hactool 并不直接在mbedtls/下手工执行上述命令而是在仓库根目录运行cp config.mk.template config.mk # 首次构建前必做 make # 自动进入 mbedtls 编译库再链接 hactool顶层 Makefile 会把-D_BSD_SOURCE、-D_POSIX_SOURCE、-D_FILE_OFFSET_BITS64等宏并入CFLAGS并把-I ./mbedtls/include与-L ./mbedtls/library分别作为头文件与库目录传入。README 还提示如果你的make不是 GNU make如 BSD 变体应改用gmakeWindows 上推荐 MinGW 环境。五、CMake 构建最小步骤与八种构建模式5.1 基本流程cmake . make make test # 运行测试与 Make 一样测试套件需要 Perl没有 Perl 时关闭测试cmake -DENABLE_TESTINGOff .关掉测试但保留程序时仍可运行小型自检programs/test/selftest。构建共享库版本cmake -DUSE_SHARED_MBEDTLS_LIBRARYOn .顶层 CMakeLists.txt 还暴露了ENABLE_PROGRAMS默认 ON、ENABLE_ZLIB_SUPPORT默认 OFF、USE_PKCS11_HELPER_LIBRARY默认 OFF等选项。5.2 构建模式Build TypeCMake 内置了多套针对 gcc/clang 的构建模式部分与编译器相关模式说明Release默认代码二进制不含多余信息-O2Debug生成调试信息并关闭优化-O0 -g3Coverage在 Debug 基础上附加覆盖率信息--coverageASan用 AddressSanitizer 检查内存错误新版 gcc/clang 附带 LeakSanitizer新版 clang 还附带 UndefinedSanitizer 检查未定义行为ASanDbg同 ASan但更慢含调试信息与更好的堆栈回溯MemSan用 MemorySanitizer 检查未初始化内存读取实验性需要较新 clang 与 Linux/x86_64MemSanDbg同 MemSan但更慢含调试信息、更好堆栈回溯与来源跟踪Check开启依赖优化的编译器告警并把所有告警视为错误-Werror切换模式很简单例如cmake -D CMAKE_BUILD_TYPEDebug .查看全部可用的 CMake 选项cmake -LH。注意CMake 已经运行过一次之后想更换编译器或编译选项必须清空缓存例如find . -iname *cmake* -not -name CMakeLists.txt -exec rm -rf {} CCgcc CFLAGS-fstack-protector-strong -Wa,--noexecstack cmake .这套模式在 hactool 仓库内并未启用hactool 直接用顶层 Make 构建但它对希望自行对 mbed TLS 做内存安全审计或覆盖率分析的开发者非常实用。六、Yotta 与 Visual Studio 构建6.1 Yottambed OS 场景Yotta 是 mbed 开发的包管理器兼构建系统。从 yotta 仓库安装yotta install mbedtls yotta build如果手上是源码副本例如直接克隆的仓库需要先在 mbed TLS 根目录运行 yotta/create-module.sh它会生成yotta/module/目录yotta/create-module.sh cd yotta/module yotta build构建前通常需要先设置 yotta target除非已在全局设置。该脚本会把include/mbedtls/*.h与library/*.c复制进模块并调用scripts/config.pl生成精简的config.hmbedtls/yotta/data/目录下还包含entropy_hardware_poll.c、target_config.h、module.json与若干 example 程序。对 hactool 而言Yotta 面向的是 mbed OS 设备端与本仓库的桌面解密工具定位不同属于移植/复用参考。6.2 Visual Studio仓库的 VS 构建文件面向Visual Studio 2010位于 visualc/VS2010/。解决方案文件mbedTLS.sln包含构建库与全部程序所需的所有基础项目tests/下的测试文件不会被编译它们同样需要 Perl 环境但programs/test/中的 selftest 程序仍然可用。七、测试体系.function .data 生成机制与集成脚本mbed TLS 自带完善的测试套件全部位于 mbedtls/tests/生成机制测试最初需要 Perl 生成测试 C 文件如test_suite_mpi.c。每个套件由两部分组成——function 文件如 suites/test_suite_mpi.function存放测试函数与data 文件如 suites/test_suite_mpi.data存放以参数形式传递给测试函数的用例。从 tests/Makefile 可以看到生成出的套件覆盖 AES 各模式、ARC4、Blowfish、Camellia、CCM、CMAC、CTR_DRBG、HMAC_DRBG、ECP/ECDH/ECDSA、GCM、MPI、RSA、PKCS 系列、SSL、X509 解析/写入、SHA 系列等数十个模块。对于带 Unix shell 且安装了 OpenSSL可选 GnuTLS的机器还有额外的集成脚本脚本作用tests/ssl-opt.sh对各类 TLS 选项重协商、会话恢复等做集成测试并测试与第三方实现的互操作性tests/compat.sh逐个密码套件测试与第三方实现的互操作性tests/scripts/test-ref-configs.pl在多种精简配置下进行构建测试tests/scripts/key-exchanges.pl在仅启用单一密钥交换算法的配置下构建测试tests/scripts/all.sh组合上述测试并叠加多种构建选项如 ASan、完整config.h与 hactool 相关的实际验证手段是在构建 mbed TLS 后运行programs/test/selftestselftest.c它会就地执行内置的算法自检无需 Perl可作为链接进 hactool 前的最小健康检查。八、示例程序programs/的用法参考mbedtls/programs/ 按功能分目录收录了大量示例程序aes/aescrypt2、crypt_and_hash、hash/generic_sum、hello、pkey/rsa_genkey、rsa_sign、ecdsa、dh_client/server 等、random/gen_entropy、gen_random_ctr_drbg、ssl/ssl_client1/2、ssl_server、dtls_client/server、mini_client 等、test/selftest、benchmark、util/pem2der、strerror、x509/cert_app、cert_write、req_app 等。README 特别提醒这些程序大多只聚焦单一功能或单一使用场景复制代码时要留意这一点——这对希望把 mbed TLS 的 AES/SHA 能力复用到其他工具中的开发者尤其重要。九、移植与贡献注意事项mbed TLS 可以移植到多种架构、操作系统与平台。做移植前README 建议先查阅官方知识库中关于移植到新环境/新 OS、外部依赖、如何配置的三篇文章外部链接不在本文转载范围内可直接阅读仓库内 config.h 与 library/Makefile 中的平台注释来获得同类信息例如 MicroBlaze 的-mno-xl-soft-mul、Plan9 的-D_BSD_EXTENSION、SunOS 的-lsocket -lnsl等。若向 mbed TLS 上游贡献代码README 列出了三项硬性要求所有贡献无论大小都需签署贡献者许可协议CLA代码须符合官方编码规范并附带完整测试提交后经项目团队与社区评审。标准流程是先查询/讨论 issue → fork 上游仓库基于 development 分支→ 编写证明 bug 修复或功能生效的测试 → 提交 Pull Request。作为只读仓库hactool 内的这份 mbed TLS 用于构建使用不涉及就地修改。十、总结把整套构建链串起来对 hactool 使用者来说最常用到的完整链路是# 1. 准备 config.mk首次 cp config.mk.template config.mk # 2. 一键构建先编译 mbedtls 三个库再链接 hactool make # 3. 可选在 mbed TLS 内做功能裁剪例如 scripts/config.pl unset MBEDTLS_SSL_DTLS_ANTI_REPLAY # 需在 mbedtls/ 目录下执行 make其中mbedtls/目录内嵌的 mbed TLS 2.6.1 提供了 hactool 所需的全部底层密码学原语——AES 加解密aes.h → mbedtls cipher/CMAC、SHA-256 与 HMACsha.c → mbedtls MD 层、RSA-2048 验签rsa.c → mbedtls MPI。理解其配置开关、三种构建路径与依赖顺序既能保证 hactool 顺利编译也能在需要裁剪体积或做安全审计时灵活调整这份加密底座。赞分享开发工具逆向工程【免费下载链接】hactoolhactool is a tool to view information about, decrypt, and extract common file formats for the Nintendo Switch, especially Nintendo Content Archives.项目地址https://gitcode.com/gh_mirrors/ha/hactool点击查看免费下载相关推荐TEN-framework 内置 Mbed TLS 的 MBEDTLS_USE_PSA_CRYPTO 全面解析配置、新 API 与内部改造TEN framework 内置 Mbed TLS 的 MBEDTLS_USE_PSA_CRYPTO 全面解析配置、新 API 与内部改造 导读 本文以 us人工智能AI Agent多模态语音AI 应用Golang生态系统深度探索流行库和框架使用指南Golang生态系统深度探索流行库和框架使用指南 Golang作为一门高效、简洁的编程语言拥有丰富的生态系统其流行库和框架为开发者提供了强大的工具支持。本人工智能机器学习计算机视觉多模态本地部署INAV 仓库中的 Mbed TLS 2.16.2配置、构建与 STM32Cube 集成全指南INAV 仓库中的 Mbed TLS 2.16.2配置、构建与 STM32Cube 集成全指南 导读 Mbed TLS又称 mbedTLS是 ARM 推出无人机嵌入式智能硬件上一篇LaTeX公式一键转Word终极效率提升10倍的完整教程下一篇プロジェクトレベル CLAUDE.md 実践ガイドECC リポジトリに学ぶエージェント向け開発規約の設計とプロンプト防御创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考