錦州市廣廈電腦維修|上門(mén)維修電腦|上門(mén)做系統(tǒng)|0416-3905144熱誠(chéng)服務(wù),錦州廣廈維修電腦,公司IT外包服務(wù)
topFlag1 設(shè)為首頁(yè)
topFlag3 收藏本站
 
maojin003 首 頁(yè) 公司介紹 服務(wù)項(xiàng)目 服務(wù)報(bào)價(jià) 維修流程 IT外包服務(wù) 服務(wù)器維護(hù) 技術(shù)文章 常見(jiàn)故障
錦州市廣廈電腦維修|上門(mén)維修電腦|上門(mén)做系統(tǒng)|0416-3905144熱誠(chéng)服務(wù)技術(shù)文章
[原創(chuàng)] hopper 逆向分析 010 editor 授權(quán)過(guò)程分析

作者: goodboy_wkx  日期:2017-05-01 19:58:06   來(lái)源: 本站整理

 
1、實(shí)驗(yàn)環(huán)境
操作系統(tǒng): mac os x 10.12
調(diào)試工具:hopper disassemble v4
程序:010 editor for mac 
官網(wǎng)地址:http://www.sweetscape.com/010editor/

2、開(kāi)始分析
2.1、尋找線索
看一下正常執(zhí)行時(shí)的整個(gè)流程,并從中獲得線索。
在關(guān)于里面找到注冊(cè)然后彈出注冊(cè)的信息框,輸入用戶名和密碼,點(diǎn)擊 check license,然后提示 “Invalid name or password…….”,如圖-1。
現(xiàn)在找到了第一條線索,記為線索1。線索1:stringInvalidNameOrPassword字符串“Invalid name or password…”。



圖-1


2.2、分析線索1
打開(kāi) hopper disassembler v4,將010editor 拖拽到hopperdisassembler上,如下圖:
 
通過(guò)hopper中的字符串查找定位到stringInvalidNameOrPassword出現(xiàn)的位置,如圖-2。
 
圖-2



再查看stringInvalidNameOrPassword在哪些地方被引用了。
選中stringInvalidNameOrPassword所在地址,按一下“X”鍵,顯示出該地址的所有引用,如圖-3。
 
圖-3 

雙擊圖-3中的地址,即可顯示出該調(diào)用地址處的反匯編代碼,如圖-4。
接下來(lái)就要分析 sub_1002e5f10 這個(gè)函數(shù)。到這里,我門(mén)又有了新的疑點(diǎn):
1、        stringInalidNameOrPassword這條路是從哪里走過(guò)來(lái)的?
2、        該函數(shù)中有沒(méi)有正確的路?如果有,哪么正確的路在哪里?
3、        正確的路與stringInalidNameOrPassword的路是在哪里走岔的?
上面的三個(gè)疑點(diǎn)都在 sub_1002e5f10 函數(shù)中找。
 
圖-4

光標(biāo)放在1002e69e4 處,然后點(diǎn)擊工具欄中的CFG module 顯示函數(shù)流程圖如圖-5。
   
    
圖-5

總的來(lái)說(shuō)loc_1002e6900 是一條錯(cuò)誤的路(trial+invalidNameOrPassword)。
再找loc_1002e6900 的來(lái)源,如圖-6。
 
圖-6

再向上找,找 loc_1002e65b8 的來(lái)源,如圖-7?梢钥吹绞窃趌oc_1002e6363處和正常的授權(quán)路分岔了。
關(guān)鍵是 ebx的值,如果ebx == 0xdb 該函數(shù)就走授權(quán)的路。
現(xiàn)在用偽代碼模式查看這塊代碼,如圖-8。這時(shí),我們定位到了三個(gè)重要函數(shù) sub_1000c9230 sub_1000c90e0 sub_1002e9e40。
其中sub_1002e9e40函數(shù)是用來(lái)聯(lián)網(wǎng)校驗(yàn)授權(quán)信息的,這里就不進(jìn)入該函數(shù)分析來(lái)。
ebx 的值是 sub_1000c9230 的返回值,所以如果能控制sub_1000c90e0 的返回值就能控制該函數(shù)走授權(quán)的路了。
 
圖-7
 
圖-8

進(jìn)入sub_1000c90e0 函數(shù)進(jìn)行分析,如圖-9。sub_1000c90e0 的返回值有 0x113, 0xdb, 0x20c, 0xed, 0x71, 0x177, 0xf9,0x2f共8種。
其中0xdb是走的授權(quán)路線。在該函數(shù)中調(diào)用了sub_1000c9230 函數(shù),如果能控制 sub_1000c9230 的返回值為0x2d 就能讓sub_1000c90e0返回 0xdb。
其實(shí)為了保險(xiǎn)起見(jiàn)可以將 sub_1000c90e0 函數(shù)中的第三行 rax = 0x113改成rax = 0xdb。這樣就能保證 sub_1000c90e0 返回的是 0xdb。
 
圖-9

函數(shù)分析sub_1000c9230。
先來(lái)查看該函數(shù)的所以引用。
00000001000c9106         call       sub_1000c9230 ;在sub_1000c90e0 函數(shù)中。 
00000001002e62f2         call       sub_1000c9230 ;在sub_1002e5f10 函數(shù)中。 
沒(méi)有授權(quán)時(shí),在sub_1002e5f10返回的是0xe7,在 sub_1000c90e0中返回的不是 0x2d。
函數(shù)sub_1000c9230的返回值有rax= 0x93, 0xe7, 0x2d,0x4e四種,每個(gè)返回值都有自己的特殊含義。
其中0x2d就是走授權(quán)道路的返回值;0x93 是tial 或者 Invalid name or password。
[size=14.6667px]
修改 sub_1000c9230函數(shù)使其只返回0x2d,我的修改方式是將[size=14.666666984558105px]

[Asm] 純文本查看 復(fù)制代碼
1
2
3
00000001000c9268         mov       r12d, 0x93
00000001000c926e         cmp       dword [rax+4], 0x0
00000001000c9272         je          loc_1000c9552


修改成

[Asm] 純文本查看 復(fù)制代碼
1
2
3
4
00000001000c9268         mov       r12d, 0x2d
00000001000c926e         cmp       dword [rax+4], 0x0
00000001000c9272         jmp       loc_1000c9552
00000001000c9277         nop


參照?qǐng)D-7,將sub_1002e5f10 函數(shù)中的

[Asm] 純文本查看 復(fù)制代碼
1
00000001002e631c         je        loc_1002e6363


修改成

[Asm] 純文本查看 復(fù)制代碼
1
00000001002e631c         jne        loc_1002e6363;目的是繞過(guò)sub_1002e9e40網(wǎng)絡(luò)驗(yàn)證。


通過(guò)線索1,我們找到來(lái)正常授權(quán)的路,線索1的路也走完了。保存修改。

運(yùn)行修改后的文件時(shí),提示圖-10
 
圖-10


2.3尋找新線索[size=14.6667px]
其實(shí)在提示圖-10窗口之前有個(gè)窗口一閃而退,那個(gè)窗口提示的是什么哪?
通過(guò)錄像的方式錄下來(lái)然后慢放暫停。其實(shí)那個(gè)提示框是圖-11。
現(xiàn)在我們又找到了新的線索(2條)。
[size=14.6667px]線索2: stringLicensedTo = “Licensed to:”
[size=14.6667px]線索3: stringInvalid license=“Invalid license”。


2.3.1分析線索2
線索2:stringLicensedTo = “Licensed to:”通過(guò)字符串查找并鎖定到引用函數(shù),分析函數(shù)流程如圖-12。修改成如圖-13。
 
圖-11
 
圖-12
   
 
圖-13
[size=14.6667px]

2.3.2分析線索3[size=14.6667px]
線索3: stringInvalid license=“Invalid license”。通過(guò)字符串查找并鎖定到引用函數(shù)為sub_1002e7620。分析函數(shù) sub_1002e7620 流程如圖-14
 
圖-14
[size=14.6667px]
簡(jiǎn)化一下如下:

[C++] 純文本查看 復(fù)制代碼
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
if (eax > 0xda)//loc_1002e782a
{
         if       (eax > 0x20b)//1002e78b2
         {      
                   if       ( eax != 0x20c)//1002e7b0f
                   {
                            goto 1002e8413;
                   }
                   else
                   {
                            Upgrade Required
                   }
         }
         else
         {
                   if( eax > 0x176)
                   {
                            goto 1002e7b73;//Evaluation
                   }
                   else
                   {
                            if(eax > 0x112)
                            {
                                     if(eax != 0x113)//1002e7da4
                                               invalid license
                                     else
                                               days left
                            }      
                            else
                            {
                                     if(eax == 0xdb)
                                               goto 1002eb295;//OK registered
                                     else
                                               envaluied version
                            }              
                   }  
         }
}
else if(eax != 0x2f)
{
         goto 1002e8413;//Evaluation Version
}
else
{
         Bad Clock Dat;
}


可以修改成

[C++] 純文本查看 復(fù)制代碼
1
2
3
4
5
6
7
if (eax > 0xda){
goto 1002eb295;//OK registered
}
else
{
goto 1002eb295;//OK registered
}




[Asm] 純文本查看 復(fù)制代碼
1
2
3
00000001002e782a         mov       eax, dword [r15+0x18c]                     ; CODE XREF=sub_1002e7620+487, sub_1002e7620+501
00000001002e7831         cmp       eax, 0xda
00000001002e7836         ja        loc_1002e78b2


修改成

[Asm] 純文本查看 復(fù)制代碼
1
2
3
4
5
loc_1002e782a:
00000001002e782a         mov       eax, dword [r15+0x18c]                     ; CODE XREF=sub_1002e7620+487, sub_1002e7620+501
00000001002e7831         jmp       loc_1002e8295
00000001002e7836         nop
00000001002e7837         nop


熱門(mén)文章
  • 機(jī)械革命S1 PRO-02 開(kāi)機(jī)不顯示 黑...
  • 聯(lián)想ThinkPad NM-C641上電掉電點(diǎn)不...
  • 三星一體激光打印機(jī)SCX-4521F維修...
  • 通過(guò)串口命令查看EMMC擦寫(xiě)次數(shù)和判...
  • IIS 8 開(kāi)啟 GZIP壓縮來(lái)減少網(wǎng)絡(luò)請(qǐng)求...
  • 索尼kd-49x7500e背光一半暗且閃爍 ...
  • 樓宇對(duì)講門(mén)禁讀卡異常維修,讀卡芯...
  • 新款海信電視機(jī)始終停留在開(kāi)機(jī)界面...
  • 常見(jiàn)打印機(jī)清零步驟
  • 安裝驅(qū)動(dòng)時(shí)提示不包含數(shù)字簽名的解...
  • 共享打印機(jī)需要密碼的解決方法
  • 圖解Windows 7系統(tǒng)快速共享打印機(jī)的...
  • 錦州廣廈電腦上門(mén)維修

    報(bào)修電話:13840665804  QQ:174984393 (聯(lián)系人:毛先生)   
    E-Mail:174984393@qq.com
    維修中心地址:錦州廣廈電腦城
    ICP備案/許可證號(hào):遼ICP備2023002984號(hào)-1
    上門(mén)服務(wù)區(qū)域: 遼寧錦州市區(qū)
    主要業(yè)務(wù): 修電腦,電腦修理,電腦維護(hù),上門(mén)維修電腦,黑屏藍(lán)屏死機(jī)故障排除,無(wú)線上網(wǎng)設(shè)置,IT服務(wù)外包,局域網(wǎng)組建,ADSL共享上網(wǎng),路由器設(shè)置,數(shù)據(jù)恢復(fù),密碼破解,光盤(pán)刻錄制作等服務(wù)

    技術(shù)支持:微軟等
    主站蜘蛛池模板: 99久久亚洲精品无码毛片| 国产亚洲大尺度无码无码专线| 亚洲AV无码成H人在线观看| 亚洲欧洲日产国码无码久久99| 亚洲日韩精品无码一区二区三区| 国产丰满乱子伦无码专区| 亚洲av无码专区在线观看下载| 国产亚洲精久久久久久无码77777| 无码人妻一区二区三区免费手机| 综合国产在线观看无码| 免费无遮挡无码视频网站| 日韩精品无码久久久久久 | 久久中文精品无码中文字幕| 亚洲av无码一区二区乱子伦as| 无码人妻一区二区三区兔费| 毛片无码免费无码播放 | 色窝窝无码一区二区三区| 日韩少妇无码喷潮系列一二三| 精品无码久久久久国产动漫3d| 亚洲av无码专区在线电影| 国产aⅴ无码专区亚洲av麻豆 | 东京热av人妻无码| 中文无码一区二区不卡αv| 国产在线无码视频一区二区三区 | 午夜不卡无码中文字幕影院| AV无码小缝喷白浆在线观看 | 欧洲无码一区二区三区在线观看| 亚洲中文字幕不卡无码| 国产免费无码一区二区| 一本色道久久HEZYO无码| 中文字幕无码一区二区免费| 久久久久无码精品| 亚洲国产精品无码久久一区二区 | 久久AV高潮AV无码AV| 日韩国产精品无码一区二区三区| 波多野42部无码喷潮在线 | 本道久久综合无码中文字幕| 久久精品无码一区二区三区不卡 | 日韩人妻无码精品久久久不卡| 人妻丰满熟妇av无码区不卡| 亚洲国产av高清无码|