天天看點

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

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

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

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錯誤的建立視窗一點點的找到)

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

在OD中下斷在兩個函數處

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

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

其中sub_409C9B函數中調用了sub_40A826函數.其中判斷sub_40A826函數傳回值為2D才為注冊成功跳轉

sub_409C9B函數中調用sub_40A826函數并對比其傳回值是0x2D還是其他錯誤值

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

sub_40A826函數中的轉換與算法

Name轉換為Byte數組

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

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

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

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

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

部分key加密的部分

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

計算序列号第1個與第7個的結果,函數

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

判斷整除0xB的函數

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

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

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

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

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

OD中動态調試其Name加密過程,得知0x3DD4148處是一個加密key用到的加密秘鑰數組

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

整個加密key數組如下:

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

sub_40A826函數指派并傳回0x2D

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

sub_409C9B函數傳回0xDB後表示成功:

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

另:繼續使用的跳轉:

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

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

完成注冊機的編寫

注冊機程式源碼:

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

測試注冊效果

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

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