IDA pro 生成idapro.hexlic

先安装IDA pro,安装好后,把根目录中的 ida32.dll和ida.dll赋值到python文件脚本同目录中,如图。
在这里插入图片描述
直接运行py

import json
import hashlib
import os
from datetime import datetime, timedelta
import platform
import winregname = input("Please enter your name(only ascii chars): ")
email = input("Please enter your email: ")
# originally made by irabbit
current_time = datetime.now()
start_date = current_time.strftime("%Y-%m-%d %H:%M:%S")
end_date = (current_time + timedelta(days=365*10)).strftime("%Y-%m-%d %H:%M:%S")if platform.system() == "Windows":try:reg_key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, r"SOFTWARE\Hex-Rays SA\IDA Professional 9.0")location, _ = winreg.QueryValueEx(reg_key, "Location")os.chdir(location)except FileNotFoundError:print("Registry key not found. Using current directory.")except Exception as e:print(f"An error occurred: {e}. Using current directory.")license = {"header": {"version": 1},"payload": {"name": name,"email": email,"licenses": [{"description": "license","edition_id": "ida-pro","id": "48-2137-ACAB-99","license_type": "named","product": "IDA","seats": 1,"start_date": start_date,"end_date": end_date,  # This can't be more than 10 years!"issued_on": start_date,"owner": name,"product_id": "IDAPRO","add_ons": [],"features": [],}],},
}def add_every_addon(license):platforms = ["W",  # Windows"L",  # Linux"M",  # macOS]addons = ["HEXX86","HEXX64","HEXARM","HEXARM64","HEXMIPS","HEXMIPS64","HEXPPC","HEXPPC64","HEXRV64","HEXARC","HEXARC64",# Probably cloud?# "HEXCX86",# "HEXCX64",# "HEXCARM",# "HEXCARM64",# "HEXCMIPS",# "HEXCMIPS64",# "HEXCPPC",# "HEXCPPC64",# "HEXCRV",# "HEXCRV64",# "HEXCARC",# "HEXCARC64",]i = 0for addon in addons:i += 1license["payload"]["licenses"][0]["add_ons"].append({"id": f"48-1337-DEAD-{i:02}","code": addon,"owner": license["payload"]["licenses"][0]["id"],"start_date": start_date,"end_date": end_date,})# for addon in addons:#     for platform in platforms:#         i += 1#         license["payload"]["licenses"][0]["add_ons"].append(#             {#                 "id": f"48-1337-DEAD-{i:02}",#                 "code": addon + platform,#                 "owner": license["payload"]["licenses"][0]["id"],#                 "start_date": "2024-08-10 00:00:00",#                 "end_date": "2033-12-31 23:59:59",#             }#         )add_every_addon(license)def json_stringify_alphabetical(obj):return json.dumps(obj, sort_keys=True, ensure_ascii=False, separators=(",", ":"))def buf_to_bigint(buf):return int.from_bytes(buf, byteorder="little")def bigint_to_buf(i):return i.to_bytes((i.bit_length() + 7) // 8, byteorder="little")# Yup, you only have to patch 5c -> cb in libida64.so
pub_modulus_hexrays = buf_to_bigint(bytes.fromhex("edfd425cf978546e8911225884436c57140525650bcf6ebfe80edbc5fb1de68f4c66c29cb22eb668788afcb0abbb718044584b810f8970cddf227385f75d5dddd91d4f18937a08aa83b28c49d12dc92e7505bb38809e91bd0fbd2f2e6ab1d2e33c0c55d5bddd478ee8bf845fcef3c82b9d2929ecb71f4d1b3db96e3a8e7aaf93")
)
pub_modulus_patched = buf_to_bigint(bytes.fromhex("edfd42cbf978546e8911225884436c57140525650bcf6ebfe80edbc5fb1de68f4c66c29cb22eb668788afcb0abbb718044584b810f8970cddf227385f75d5dddd91d4f18937a08aa83b28c49d12dc92e7505bb38809e91bd0fbd2f2e6ab1d2e33c0c55d5bddd478ee8bf845fcef3c82b9d2929ecb71f4d1b3db96e3a8e7aaf93")
)private_key = buf_to_bigint(bytes.fromhex("77c86abbb7f3bb134436797b68ff47beb1a5457816608dbfb72641814dd464dd640d711d5732d3017a1c4e63d835822f00a4eab619a2c4791cf33f9f57f9c2ae4d9eed9981e79ac9b8f8a411f68f25b9f0c05d04d11e22a3a0d8d4672b56a61f1532282ff4e4e74759e832b70e98b9d102d07e9fb9ba8d15810b144970029874")
)def decrypt(message):decrypted = pow(buf_to_bigint(message), exponent, pub_modulus_patched)decrypted = bigint_to_buf(decrypted)return decrypted[::-1]def encrypt(message):encrypted = pow(buf_to_bigint(message[::-1]), private_key, pub_modulus_patched)encrypted = bigint_to_buf(encrypted)return encryptedexponent = 0x13def sign_hexlic(payload: dict) -> str:data = {"payload": payload}data_str = json_stringify_alphabetical(data)buffer = bytearray(128)# first 33 bytes are randomfor i in range(33):buffer[i] = 0x42# compute sha256 of the datasha256 = hashlib.sha256()sha256.update(data_str.encode("gbk"))digest = sha256.digest()# copy the sha256 digest to the bufferfor i in range(32):buffer[33 + i] = digest[i]# encrypt the bufferencrypted = encrypt(buffer)return encrypted.hex().upper()def generate_patched_dll(filename):if not os.path.exists(filename):print(f"Didn't find {filename}, skipping patch generation")returnwith open(filename, "rb") as f:data = f.read()if data.find(bytes.fromhex("EDFD42CBF978")) != -1:print(f"{filename} looks to be already patched :)")returnif data.find(bytes.fromhex("EDFD425CF978")) == -1:print(f"{filename} doesn't contain the original modulus.")returndata = data.replace(bytes.fromhex("EDFD425CF978"), bytes.fromhex("EDFD42CBF978"))bak_filename = f"{filename}.bak"os.rename(filename, bak_filename)patched_filename = filenamewith open(patched_filename, "wb") as f:f.write(data)print(f"Generated modulus patch is applied, have you fun! Backup saved to {bak_filename}")# message = bytes.fromhex(license["signature"])
# print(decrypt(message).hex())
# print(encrypt(decrypt(message)).hex())license["signature"] = sign_hexlic(license["payload"])serialized = json_stringify_alphabetical(license)# write to ida.hexlic
filename = "idapro.hexlic"with open(filename, "w") as f:f.write(serialized)print(f"Saved new license to {filename}!")
if platform.system() == "Windows":generate_patched_dll("ida32.dll")generate_patched_dll("ida.dll")
elif platform.system() == "Linux":generate_patched_dll("libida32.so")generate_patched_dll("libida.so")
elif platform.system() == "Darwin":generate_patched_dll("libida32.dylib")generate_patched_dll("libida.dylib")

把生成的新的 ida32.dllida.dll再替换回去,
在这里插入图片描述
打开ida 点击Help
在这里插入图片描述
把生成好的密钥文件添加进去。就破解完成了!!!

参考

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/98860.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/98860.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【ARMv7-M】复位向量与启动过程

关于ARMv7上电复位后,通过复位向量初始化堆栈位置、PC指针,然后跳转到汇编入口,开始执行系统初始化等等操作,熟悉了解这个过程,对于嵌入式系统软件开发来说至关重要。不同的SOC在BootROM与Flash的地址分配上&#xff0…

【开发者导航】开源免费的金融数据量化与分析项目!

Hello大家好!我是助你打破信息差的开发者导航。今天给大家分享的开源项目是OpenBB,一个面向量化与分析的开源金融数据平台! 金融分析和量化研究需要可靠的数据来源与灵活的分析工具。OpenBB 正是为金融分析师、量化研究员以及 AI 代理开发者…

如何使用 OCR 提取扫描件 PDF 的文本(Python 实现)

从 PDF 中提取文本一直是很多人的需求。市面上的工具虽然能处理大部分数字 PDF,但遇到扫描件 PDF 时往往无能为力,想要直接复制或获取其中的文字并不容易。其实这个问题并不是没有解法 —— 本文将带你了解如何借助 Python OCR 技术,从扫描 …

Deepin/UOS系统中开启和配置SSH服务

文章目录一、安装SSH服务二、启动并设置开机自启三、配置SSH服务(可选)四、配置防火墙(若开启)五、测试SSH连接注意事项在Deepin系统中开启和配置SSH服务可以按照以下步骤进行: 一、安装SSH服务 Deepin基于Debian&am…

敏捷适合短期项目还是长期项目

在项目管理领域,敏捷方法因其灵活性和快速响应特性而广受欢迎。敏捷既适合短期项目,也能应用于长期项目,但两者的实施重点不同:短期项目侧重于快速交付和验证价值,长期项目则依靠迭代和持续改进确保复杂目标逐步实现。…

springboot+python+uniapp基于微信小程序的旅游服务系统景点信息展示 路线推荐 在线预约 评论互动系统

目录技术栈介绍具体实现截图系统设计研究方法:设计步骤设计流程核心代码部分展示研究方法详细视频演示试验方案论文大纲源码获取/详细视频演示技术栈介绍 Django-SpringBoot-php-Node.js-flask 本课题的研究方法和研究步骤基本合理,难度适中&#xff0…

保证消息的可靠性

图示以RabbitMQ为例,RabbitMQ server 包含多个vhost,而vhost主要是分为 exchanges 和 queues。 消息的可靠性分为以下几步: 生产者投递的可靠性; a. 消息投递到exchange时,成功和失败都会从回调接口中返回。 b. 消息从…

illustrator-06-猫头鹰

导入素材:【文件-置入】若:【文件-打开】的方式填色,描边功能会失效ctrl2锁定为背景画圆和三角形选择三角形-双击镜像工具-垂直-复制全选-窗口-路径查找器-联集两个正圆联集

家庭饮用水消费新趋势:预付返还模式下的用户增长与隐忧

大家好,我是银子,一直将目光聚焦于传统行业转型发展的软件开发。今天咱们来聊聊近期在市场上热度颇高的青蓝送水商业模式。它以“免费送水”为核心策略,宣称能让用户“喝水不花钱”,推广者“分享可获利”。这听起来很美好&#xf…

前沿探索:RISC-V 架构 MCU 在航天级辐射环境下的可靠性测试

摘要随着商业航天和高可靠应用需求的蓬勃发展,空间辐射环境对电子设备的可靠性和稳定性构成严峻挑战,单粒子效应和总剂量效应是半导体器件在太空环境中面临的主要辐射威胁,半导体器件的抗辐射能力成为决定其在严苛太空环境下可靠运行的关键因…

漫谈《数字图像处理》之边缘检测与边界预处理的辨析

在数字图像处理中,边缘检测与边界预处理常因均围绕 “图像边缘” 展开而被混淆。事实上,二者分属不同技术范畴 ——边缘检测是图像分割的核心环节,边界预处理是特征提取的前置步骤,虽处理对象存在关联,但目标定位、技术…

CSS 居中

<div class"father"><div class"child"></div> </div>1. Flex&#xff08;推荐&#xff09;.father{width: 300px;height: 300px;background-color: red;display: flex; /* flex 方法 */justify-content: center; …

MySQL数据库-03(字段的约束)

字段的约束&#xff08;一&#xff09;常用约束介绍&#xff08;二&#xff09;创建带约束字段的语法格式&#xff08;三&#xff09;主键与自增长&#xff08;四&#xff09;非空&#xff08;五&#xff09;唯一&#xff08;六&#xff09;默认值&#xff08;一&#xff09;常…

【数据可视化-112】使用PyEcharts绘制TreeMap(矩形树图)完全指南及电商销售数据TreeMap绘制实战

&#x1f9d1; 博主简介&#xff1a;曾任某智慧城市类企业算法总监&#xff0c;目前在美国市场的物流公司从事高级算法工程师一职&#xff0c;深耕人工智能领域&#xff0c;精通python数据挖掘、可视化、机器学习等&#xff0c;发表过AI相关的专利并多次在AI类比赛中获奖。CSDN…

Linux下编译MMCV

介绍 MMCV 有两个主要版本&#xff0c;mmcv 和 mmcv-lite。 mmcv 是全面版本&#xff0c;包含所有的特性以及丰富的开箱即用的 CUDA 算子&#xff0c;但构建时间较长&#xff1b;mmcvlite 是精简版&#xff0c;不包含 CUDA 算子&#xff0c;但拥有其他所有功能&#xff0c;适…

Spring Boot 分布式事务常见问题:Seata、XA 与本地消息表对比

一、前言在单体应用中&#xff0c;事务一般由关系型数据库本身来保证&#xff0c;通过 ACID 特性实现数据一致性。但随着微服务架构的普及&#xff0c;应用被拆分为多个独立服务&#xff0c;数据可能分散在不同数据库、不同存储引擎中&#xff0c;传统的单机事务无法再覆盖。这…

Transporter App 使用全流程详解:iOS 应用 ipa 上传工具、 uni-app 应用发布指南

在 iOS 应用开发与发布过程中&#xff0c;Transporter App 是苹果官方提供的一款上传工具&#xff0c;专门用于将 ipa 文件 或 应用资源 上传到 App Store Connect。 与 Xcode 上传 相比&#xff0c;Transporter 更加稳定&#xff0c;尤其适合大文件上传&#xff0c;因此在 iOS…

计算机毕业设计 基于Hadoop的B站数据分析可视化系统的设计与实现 Python 大数据毕业设计 Hadoop毕业设计选题【附源码+文档报告+安装调试】

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python、大数据、人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&…

使用自定义LLM和Embedding模型部署Vanna:基于RAG的Text-to-SQL生成

使用自定义LLM和Embedding模型部署Vanna&#xff1a;基于RAG的Text-to-SQL生成 说明&#xff1a; 首次发表日期&#xff1a;2024-07-12Vanna Github地址&#xff1a; https://github.com/vanna-ai/vannaVanna官方文档&#xff1a; https://vanna.ai/ 部署Vanna时我们可以选择使…

Linux多线程概念

背景知识内存管理OS进行内存管理不是以字节为单位的&#xff0c;而是以内存块为单位的&#xff0c;默认大小为4kb&#xff1b;系统和磁盘文件进行IO交互的单位是4kb&#xff08;8个扇区&#xff09;&#xff1b;OS对内存管理实质上是对页框进行管理。页框&#xff08;Page Fram…