逆向分析010 editor
0x01 什么是010 editor
010 Editor 是一款專業的文本編輯器和十六進制編輯器,旨在快速輕松地編輯計算機上任何文件的內容。該軟件可以編輯文本文件,包括 Unicode 文件、批處理文件、C/C++、XML 等,但 010 Editor 擅長的地方在于編輯二進制文件。二進制文件是計算機可讀但人類不可讀的文件(如果在文本編輯器中打開,二進制文件將顯示為亂碼)。十六進制編輯器是一個程序,允許您查看和編輯二進制文件的各個字節,包括 010 編輯器在內的高級十六進制編輯器還允許您編輯硬盤驅動器、軟盤驅動器、內存密鑰、閃存驅動器、CD-ROM、 流程等。
0x02 OD暴力破解
在軟件逆向破解的過程中,OD暴力破解是比較有效的方式,通過修改jcc指令或者nop掉一些跳轉讓程序按照正確的流程走下去。
主要流程大概是:1、尋找關鍵函數;2、分析整體流程;3、修改程序驗證邏輯。
本次測試的010 editor版本為v13.0
首先查殼
既然無殼那就直接上OD
首先我們要找到注冊的函數,首次下載010 editor可以試用30天,點擊注冊按鈕
程序會讓輸入用戶名和注冊碼,隨便輸入試試
程序會提示無效的用戶名和密碼,可以根據程序提示的內容來找到對應的函數
找到對應的字符串,跟進函數
跟進后可以看到,程序執行到輸出無效的用戶名和密碼處,是通過一個跳轉到該位置的,繼續往上跟看看是那個地方跳轉
發現是從0x0144B62A位置處跳轉過來的,這樣的話是否可以直接修改jcc執行來讓程序不跳轉呢
改成je試下,改成je后發現不對,程序會執行到0x0144B6C6的位置,提示Password accepted but the trial period is already over,那么就繼續往上跟蹤
在跳轉前邊有三個cmp指令,其中0x0144B60D是從0x0144B4E2處跳轉來的
在0x0144B4E2處下斷點調試一下
在這里發現0x0144B51D的位置會輸出Password accepted,所以這里把jnz改成je或者nop掉就可以了
保存出來看一下
可以看到輸入任意的內容已經激活成功,但是這樣的話每次打開都需要點擊一下check license,那么繼續看看能不能讓程序直接打開。
首先來梳理一下正常的邏輯程序是怎么運行的:首先在0x0030B3FC的位置處EAX和0xE7進行比較,此時EAX的值為0xE7,所以je跳轉成立,程序運行到0x0030B4DC處,cmp ebx,0xDB,這時候EBX的值為0x177,jnz不等于則跳轉,所以此時跳轉成立,跳轉到0x0030B60D的位置處,這個時候程序已經跳過了驗證成功的地方,繼續執行,有三個cmp語句后跟jcc跳轉指令,cmp ebx,0xED和cmp ebx,0x20C,這時EBX的值還是0x177,所以兩個je都沒有跳轉,運行到第三個cmp指令cmp eax,0x93的位置,EAX此時的值為0xE7,這里是jnz指令所以跳轉成功,跳轉到0x0030B6E8的位置,輸出無效的用戶名密碼,驗證函數到此結束。
通過上面的分析當EBX等于0xDB的時候程序才會走到驗證成功的位置,也就是說想要程序不每次運行都彈驗證框,需要直接將0xDB賦給EBX
返回到0x0030B3FC的位置繼續往上跟蹤可以看到EBX的值就是EAX的值,所以需要將0xDB賦給EAX,那么需要繼續跟蹤看看EAX的值是誰賦給的,在0x0030B3E9的位置處下斷點,F8執行,發現在執行call 0x0013808A的時候EAX的值發生了變化,所以直接跟進call里面
在開頭直接給EAX賦值,mov eax,0x2d retn 0x8
最后把程序dump出來,發現程序直接打開就能使用了也不用每次都點擊驗證了。
0x03 總結
其實010 editor對于新手逆向來說還是挺友好的,沒有加殼,然后整個函數的邏輯也算比較清晰,更改起來也很簡單,以后有時間的還是要研究一下注冊驗證的算法,然后寫個注冊機出來。
審核編輯:湯梓紅
-
編輯器
+關注
關注
1文章
805瀏覽量
31163 -
十六進制
+關注
關注
2文章
32瀏覽量
37731 -
Editor
+關注
關注
0文章
20瀏覽量
14115
原文標題:逆向分析010 editor
文章出處:【微信號:Tide安全團隊,微信公眾號:Tide安全團隊】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論