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
英文地址,請注明出處:http://en.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…