錦州市廣廈電腦維修|上門維修電腦|上門做系統|0416-3905144熱誠服務,錦州廣廈維修電腦,公司IT外包服務
topFlag1 設為首頁
topFlag3 收藏本站
 
maojin003 首 頁 公司介紹 服務項目 服務報價 維修流程 IT外包服務 服務器維護 技術文章 常見故障
錦州市廣廈電腦維修|上門維修電腦|上門做系統|0416-3905144熱誠服務技術文章
[原創] hopper 逆向分析 010 editor 授權過程分析

作者: goodboy_wkx  日期:2017-05-01 19:58:06   來源: 本站整理

 
1、實驗環境
操作系統: mac os x 10.12
調試工具:hopper disassemble v4
程序:010 editor for mac 
官網地址:http://www.sweetscape.com/010editor/

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



圖-1


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



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

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

光標放在1002e69e4 處,然后點擊工具欄中的CFG module 顯示函數流程圖如圖-5。
   
    
圖-5

總的來說loc_1002e6900 是一條錯誤的路(trial+invalidNameOrPassword)。
再找loc_1002e6900 的來源,如圖-6。
 
圖-6

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

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

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

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


修改成

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


參照圖-7,將sub_1002e5f10 函數中的

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


修改成

[Asm] 純文本查看 復制代碼
1
00000001002e631c         jne        loc_1002e6363;目的是繞過sub_1002e9e40網絡驗證。


通過線索1,我們找到來正常授權的路,線索1的路也走完了。保存修改。

運行修改后的文件時,提示圖-10
 
圖-10


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


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

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

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




[Asm] 純文本查看 復制代碼
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] 純文本查看 復制代碼
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


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

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

    技術支持:微軟等
    主站蜘蛛池模板: 亚洲精品无码久久久久A片苍井空 亚洲精品无码久久久久YW | 无码夫の前で人妻を侵犯| 国产精品无码一区二区三级| 精品无码久久久久久午夜| 婷婷四虎东京热无码群交双飞视频| 麻豆人妻少妇精品无码专区| 久久成人无码国产免费播放| 无码天堂亚洲国产AV| 日韩精品无码熟人妻视频| 亚洲精品无码久久不卡| 蜜臀AV无码精品人妻色欲| 亚洲av永久无码制服河南实里| 亚洲无码一区二区三区| 亚洲AV无码成人专区片在线观看 | 国产精品无码专区在线观看| 免费无码又爽又刺激网站| 无码av免费毛片一区二区| 欧洲成人午夜精品无码区久久| 伊人久久综合无码成人网| 成在线人免费无码高潮喷水| 激情射精爆插热吻无码视频| 久久久无码人妻精品无码| 亚洲国产成人片在线观看无码| 亚洲中文字幕无码爆乳av中文| 亚洲AV无码一区二区三区性色| 无码人妻精品一区二区三区夜夜嗨 | 久久无码一区二区三区少妇 | 国产精品白浆在线观看无码专区| 久久AV高清无码| 未满十八18禁止免费无码网站| 国产成人无码AV一区二区在线观看| 日韩免费a级毛片无码a∨| 大胆日本无码裸体日本动漫 | 波多野结衣AV无码| 日韩乱码人妻无码中文视频| 无码激情做a爰片毛片AV片| 粉嫩大学生无套内射无码卡视频| 久久精品无码一区二区无码| 99无码人妻一区二区三区免费| 久久久久亚洲AV无码专区体验| av无码免费一区二区三区|