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

逆向工程及其在CAD軟件中的實(shí)現(xiàn)
allegro pcb editor規(guī)則設(shè)置類別優(yōu)先順序

Foxit PDF Editor.exe
PCB逆向原理圖設(shè)計(jì)
基于frida的Objection對(duì)APP逆向過(guò)程的作用
External Flash Definition Editor 用戶手冊(cè)

External Flash Definition Editor 用戶手冊(cè)

評(píng)論