1. 程式人生 > >010Editor(v8.0.1最新版)逆向_演算法分析及註冊機編寫(附可用key和原始碼)

010Editor(v8.0.1最新版)逆向_演算法分析及註冊機編寫(附可用key和原始碼)

010Editor(v8.0.1)逆向分析

0x0軟體簡介

010Editor是一款採用QT介面庫編寫的,相容多作業系統的十六進位制編輯軟體.功能強大,簡單易用.

0x1逆向環境及工具

系統環境:Window 7 32bit

使用工具:OllyDbg,IDA

本次測試版本為官方最新版:

Name:010 Editor for Windows 32-Bit
Version: 8.0.1, Windows 10/8/7/Vista/XP/2000

File Size: 14.2 MB


0x2主要演算法簡述

key的演算法可能是有多種,其中第一種有判斷中間字元為0x9C的為3個"-"分割,第二種判斷0xAC的為4個"-"分割
這裡只簡要說一下第一種
假設key由key0~key7組成,每個代表兩個字元
那麼key3==0x9C
key4==(byte)Name加密Result[0]
key5==(byte)Name加密Result[1]
key6==(byte)Name加密Result[2]
key7==(byte)Name加密Result[3]
(((key0^key6) ^ 0x18) + 0x3D) ^ 0xA7 != 0;(0x18B)
(((((key2^key5)+(key1^key7*0x100))^0x7892)+0x4D30)^0x3421)/0xB == Quotient(整除0xB的商,必須小於0x3E8)
附一組可用key
Name:Hades

Password:6DFE-9C9C-7271-9A65

0x3主要邏輯逆向

使用OD和IDA動態除錯和靜態分析結合.分析如下

關鍵的兩個演算法函式(IDA中可用字串引用定位,OD中可下斷password錯誤的建立視窗一點點的找到)


在OD中下斷在兩個函式處

(通過計算偏移可以得到,也可以使用棧回溯辦法定位到)


其中sub_409C9B函式中呼叫了sub_40A826函式.其中判斷sub_40A826函式返回值為2D才為註冊成功跳轉

sub_409C9B函式中呼叫sub_40A826函式並對比其返回值是0x2D還是其他錯誤值


sub_40A826函式中的轉換與演算法

Name轉換為Byte陣列


輸入的Name和Password(看到後邊有判斷9C的地方,特意把中間key改成了9C)


判斷序列號某一組是不是9C


部分key加密的部分


計算序列號第1個與第7個的結果,函式


判斷整除0xB的函式


加密Name,然後對比其中的幾位序列號


加密Name的CALL 010Editor.01372E50函式的過程.


OD中動態除錯其Name加密過程,得知0x3DD4148處是一個加密key用到的加密祕鑰陣列


整個加密key陣列如下:


sub_40A826函式賦值並返回0x2D


sub_409C9B函式返回0xDB後表示成功:


另:繼續使用的跳轉:

這兩處關鍵跳轉,更改這兩處跳轉可以繼續使用軟體



完成註冊機的編寫

註冊機程式原始碼:


測試註冊效果


PS:010Editor也有簡單的網路驗證的,key可能過段時間不能用了,就是被檢測到了,過掉網路驗證也很簡單,不在具體寫了.