<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      跟羽夏學(xué) Ghidra ——引用

      寫在前面

      ??此系列是本人一個字一個字碼出來的,包括示例和實驗截圖。本人非計算機(jī)專業(yè),可能對本教程涉及的事物沒有了解的足夠深入,如有錯誤,歡迎批評指正。 如有好的建議,歡迎反饋。碼字不易,如果本篇文章有幫助你的,如有閑錢,可以打賞支持我的創(chuàng)作。如想轉(zhuǎn)載,請把我的轉(zhuǎn)載信息附在文章后面,并聲明我的個人信息和本人博客地址即可,但必須事先通知我

      你如果是從中間插過來看的,請仔細(xì)閱讀 跟羽夏學(xué) Ghidra ——簡述 ,方便學(xué)習(xí)本教程。請認(rèn)準(zhǔn) 博客園寂靜的羽夏 ,目前僅在該平臺發(fā)布。

      前言

      ??雖然標(biāo)題起的是“引用”,但不會僅僅講這個。我們將會涉及函數(shù)、交叉引用相關(guān)的知識。話不多說,下面開始。

      交叉引用

      ??先講最簡單的:交叉引用。我們經(jīng)常在Ghidra看到有這樣的注釋:

                              ************************************************
                              *                   FUNCTION                   *
                              ************************************************
                            undefined variable()
                undefined      AL:1              <RETURN>
                tstruct        Stack[-0x18]:16   lstruct                        XREF[1,3]:00401185(W), 
                                                                                          00401189(W), 
                                                                                          0040118f(W), 
                                                                                          00401196(W)  
                            variable                              XREF[4]:  Entry Point(*), 
                                                                            main:0040137c(c), 
                                                                            00402238, 00402318(*)  
           00401162 55          PUSH     RBP
      

      ??其中XREF就是所謂的交叉引用。如果你在某個函數(shù)中調(diào)用了其他函數(shù),或者引用了其他數(shù)據(jù),這都屬于交叉引用的范圍。好,寂靜的羽夏講完了這,下面輪到函數(shù)。

      函數(shù)

      ??函數(shù),是一個十分簡單又十分復(fù)雜又十分重要的東西。從匯編層面,函數(shù)就是一個重復(fù)使用的一個匯編代碼片段,可以傳參,完成功能,也可以返回一個值作為結(jié)果。
      ??在逆向過程中,我們有時候遇到過這樣的問題,比如一串代碼被識別為數(shù)據(jù)(ShellCode 會經(jīng)常遇到),我們轉(zhuǎn)化為代碼之后,我們還需要將其轉(zhuǎn)為函數(shù),方便分析:

      ??點擊之后,我們就可以創(chuàng)建一個函數(shù)。
      ??在分析一個函數(shù)的功能之后,我們會習(xí)慣加個注釋,以后的時候方便繼續(xù)或者回顧,Ghidra有添加注釋的功能,熱鍵是;,一個英文狀態(tài)的分號。注釋有五種,下面介紹一下:

      • EOL Comments:這個也許是最常用的注釋類型是行結(jié)束EOL注釋,它位于列表窗口中現(xiàn)有行的末尾。若要添加注釋,請使用分號喚出對話框,并選擇EOL Comments選項卡。默認(rèn)情況下,EOL注釋顯示為藍(lán)色文本,如果在“注釋”文本框中輸入多行,則將跨越多行。每一行都將縮進(jìn),以便在反匯編的右側(cè)對齊,現(xiàn)有內(nèi)容將向下移動,以便為新注釋留出空間。您可以通過重新打開對話框隨時編輯注釋。刪除注釋的最快方法是單擊列表窗口中的注釋,然后按Delete鍵。Ghidra本身在自動分析期間添加了許多EOL注釋。只有在擁有與特定數(shù)據(jù)類型相關(guān)聯(lián)的信息時才能這樣做。這些信息通常包含在類型庫中,這些類型庫顯示在數(shù)據(jù)類型管理器窗口中。

      • Pre/Post Comments:預(yù)注釋Pre Comments和后注釋Post Comments是在給定反匯編行之前或之后出現(xiàn)的完整行注釋。將鼠標(biāo)懸停在截斷的注釋上,將顯示完整的注釋。默認(rèn)情況下,預(yù)注釋顯示為紫色,后注釋顯示為藍(lán)色,以便輕松地將它們與列表中的正確地址關(guān)聯(lián)。

      • Plate Comments:它允許您對注釋進(jìn)行分組,以便在列表窗口中的任何位置顯示。該注釋居中并放置在以星號為界的矩形內(nèi)。我們檢查過的許多清單都包括一個簡單的板注釋Plate Comments,在邊界框中包含單詞函數(shù)。當(dāng)在所選函數(shù)中的第一個地址打開注釋對話框時,你可以選擇用您自己的、信息更豐富的注釋替換此通用板注釋。除了替換默認(rèn)板注釋之外,Ghidra還將注釋添加為反編譯器窗口頂部。如果創(chuàng)建Plate Comments時光標(biāo)位于反編譯器窗口的頂部,結(jié)果將是相同的。

      • Repeatable Comments:可重復(fù)注釋輸入一次,但在整個反匯編過程中可能會自動出現(xiàn)在許多位置??芍貜?fù)注釋的行為與交叉引用的概念有關(guān)?;旧?,在交叉引用的目標(biāo)輸入的可重復(fù)評論在交叉引用源處得到回應(yīng)。因此,單個可重復(fù)注釋可能會在反匯編中的多個位置得到響應(yīng)(因為交叉引用可以是多對一)。在反匯編列表中,可重復(fù)注釋的默認(rèn)顏色為橙色,回應(yīng)注釋為灰色,使其易于與其他類型的注釋區(qū)分開來。

      ??當(dāng)EOL注釋和可重復(fù)注釋在同一地址時,只有EOL注釋在列表中可見。如果刪除EOL注釋,可重復(fù)注釋將在列表中顯示。
      ??其實,在Ghidra還有一種注釋:附注Annotations。它可以在其設(shè)置注釋對話框中通過指向程序、URL、地址和符號的鏈接注釋做注釋。符號名稱更改時,注釋中的符號信息將自動更新。當(dāng)使用注釋來啟動指定的可執(zhí)行文件時,你可以提供可選參數(shù)以獲得更多控制。

      ??其實,本練習(xí)還有函數(shù)相關(guān)的,體現(xiàn)如何傳遞參數(shù)的,這就當(dāng)課外練習(xí)了,這個不是我們本教程的重點,這個是前置知識。

      實驗

      ??有關(guān)本篇博文寂靜的羽夏就介紹這些,下面開始動手,破解crakeMe,也就是第四個練習(xí)。這次先從源碼的角度,來分析這個破解這個練習(xí)。下一篇博客園博文,我們將從逆向者的角度,來分析這個程序。
      ??通過比對源碼,我們看到如下偽代碼:

      if (local_14 != 4) break;
      iVar1 = crackMe();
      if (iVar1 == 0) {
        puts("抱歉,沒成功哦,再試一次!");
      }
      else {
        puts(">> 祝賀破解成功!");
      }
      

      ??也就是說,第四個練習(xí)是調(diào)用crackMe,判斷是否非零決定是否成功。我們跟進(jìn)去:

      bool crackMe(void)
      {
        int iVar1;
        
        iVar1 = getKey();
        return iVar1 == 0x123456;
      }
      

      ??這個函數(shù)很簡單,調(diào)用getKey函數(shù),看看是否返回值是0x123456,如果是返回真,反之為假,這個是判斷是否破解成功的依據(jù)。接下來我們看看getKey干了啥:

      int getKey(void)
      {
        int local_c;
        
        puts("請輸入密鑰:");
        __isoc99_scanf("%d",&local_c);
        return local_c;
      }
      

      ??可以看到,該函數(shù)只是讀取一下輸入內(nèi)容,作為整數(shù)返回到調(diào)用者。
      ??至此,簡單的博文就到此結(jié)束。

      下一篇

      ??跟羽夏學(xué) Ghidra ——導(dǎo)航

      posted @ 2022-09-15 10:05  寂靜的羽夏  閱讀(2539)  評論(2)    收藏  舉報
      主站蜘蛛池模板: 久久婷婷国产精品香蕉| 奇米四色7777中文字幕| 国产精品午夜av福利| 国产亚洲精品日韩av在| 色综合天天综合天天更新| 亚洲精品日韩在线观看| 国产亚洲精品在av| 亚洲国产美女精品久久久| 国内精品九九久久久精品| 亚洲成人av一区免费看| 91在线国内在线播放老师| 东源县| 欧美xxxxhd高清| 亚洲精品一区二区三区大桥未久| 日韩中文字幕国产精品| 亚洲欧美综合中文| 亚洲av午夜成人片| 成人性生交片无码免费看| 在线涩涩免费观看国产精品| 国产亚洲av手机在线观看| 国产乱码1卡二卡3卡四卡5 | 护士的小嫩嫩好紧好爽| 国产初高中生粉嫩无套第一次| 亚洲国产美国产综合一区| 亚洲成在人线AⅤ中文字幕| 国产69精品久久久久777| 国产免费久久精品44| 日韩一区二区三区不卡片| 久久精品免费无码区| 亚洲国产中文字幕精品| 农村老熟女一区二区三区| 国产成人精品午夜2022| 国产成人高清亚洲综合| 另类 专区 欧美 制服丝袜| 国产强奷在线播放免费| 亚洲色一色噜一噜噜噜| 亚洲AV无码一二区三区在线播放| 乱人伦中文字幕成人网站在线 | 久久精品亚洲精品国产色婷| 午夜男女爽爽影院免费视频下载| 精品人妻免费看一区二区三区|