1. <nobr id="easjo"><address id="easjo"></address></nobr>

      <track id="easjo"><source id="easjo"></source></track>
      1. 
        

      2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
      3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>
          貴州做網站公司
          貴州做網站公司~專業!靠譜!
          10年網站模板開發經驗,熟悉國內外開源網站程序,包括DEDECMS,WordPress,ZBlog,Discuz! 等網站程序,可為您提供網站建設,網站克隆,仿站,網頁設計,網站制作,網站推廣優化等服務。我們專注高端營銷型網站,企業官網,集團官網,自適應網站,手機網站,網絡營銷,網站優化,網站服務器環境搭建以及托管運維等。為客戶提供一站式網站解決方案?。?!

          脫殼——UPX脫殼原理

          來源:互聯網轉載 時間:2024-01-29 07:47:57

          脫殼——UPX脫殼原理

          脫殼步驟

          1 找到OEP

          2 dump(導出)內存文件

          3 修復

          1 找到OEP

          1 程序運行先從殼代碼運行,殼代碼執行完之后會跳轉到真正的OEP,也就是是說第一步,首先要找到真正的OEP

          如何找到OEP

          大部分情況下,殼代碼會在一個單獨的區段里面,殼代碼執行完一定會跳轉到原來的.text段去執行,跳轉之后的地址就是這個程序原始的OEP

          根據OEP特征碼來判斷是否是原始的OEP

          不同程序、不同版本編譯器編譯出來的程序OEP各不相同,但是大致有共同的特點:

          例如:

          vc6.0的OEP處的第一個API調用是GetVersion

          VS2013是GetSystemTimeAsFileTime

          Delphi是GetModuleHandleA

          2 dump內存文件

          就是把得到的新的源文件給它保存下來,可以采用從頭到最后一個區段的手動復制下來,也可以用工具

          3 修復

          對于手動扒拉下來的內存文件,肯定還有一些問題,這里需要對PE文件進行修復

          第一次脫殼

          加殼程序下載鏈接:

          https://download.csdn.net/download/weixin_43916597/18353951?spm=1001.2014.3001.5503

          使用到的軟件:

          Peid:(吾愛激活成功教程上可以下載)

          查看程序信息

          首先先查看程序的信息,先了解敵人:

          采用PEID來查看程序的信息:

          將程序拖進PEID后:

          這里很明顯是一個UPX加殼后的程序,采用的是UPX殼代碼

          連接器版本6.0 也就是vc6.0的

          開始脫殼

          1 找到OEP

          首先采用od加載exe

          這里跟之前我們想的加殼是一樣的,就是先pushad,然后再處理自己想處理的,最后popad,再跳轉回到真正的OEP里面

           pushad ?? //殼代碼?? popad?? jmp xxxx

          但是這里沒有popad,所以需要找一下popad,在pushad執行完之后,esp指向的是棧頂的位置,popad的話會讓esp移動,所以可以直接給esp打一個斷點

          這里來一個esp斷點,也可以通過別的,比如在command中訪問到esp的地址,然后選擇,來一個硬件斷點

          需要注意的是在esp往上兩個來一個硬件訪問的dword斷點才行

          然后把這個程序跑起來,就會停在我們打的斷點這里了

          這里的話是停在了這里,這里恰好有一個popad(注:硬件訪問是在這個斷點運行了之后再停下來)

          這里popad完之后就可以尋找jmp指令了,但是如何判斷這個jmp是不是真正的jmp到oep呢

          可以看到這里的jmp跳轉到了非常遠的距離,那么到底是不是跳轉到真正的OEP呢?

          點擊od的m這個按鈕來查看PE文件的各種屬性

          431B7C肯定是在這個區段里面的從這里跳轉到了402680也就是上一個區段,這里就可以知道了,這里其實是跳轉到了第一個區段也是加殼最常用的.text區段

          然后跟入跳轉到402680

          可以看到這里的第一個api確實是GetVersion,所以這里肯定就是真正的OEP了

          2 dump(導出)內存文件

          需要再剛進入OEP的第一條指令就dump出來,因為不知道后面的代碼邏輯是什么,萬一有什么修改呢

          od中可以直接調用OllyDump脫殼調試進程

          手動dump:利用M按鈕里面的PE文件加載情況,將主程序.exe文件的內存文件一點一點復制粘貼出來

          利用010Editor創建一個hex文本類型文件

          然后從od 的m按鈕里面一塊一塊的復制文件過來

          首先處理PE頭

          雙擊進入,然后修改為16進制類型

          對整個內容進行二進制復制

          然后再到010Editor中采用Ctrl+shift+v復制,不要采用Ctrl+v復制,這樣才能直接復制16進制的內容進去

          然后就是UPX0和UPX1還有.rsrc三個字段也復制進去

          最后保存下來,隨便一個文件然后以.exe結尾就好

          3 修復

          dump出來的exe文件不能使用的,因為還有一些PE文件的內容沒有修復,這個時候再用010Editor來加載dump出來的pe文件進行修復

          它里面就會有一些PE的提示

          需要修改的信息:

          區段頭信息

          導入表

          修復區段頭

          這里里面很多區段頭的信息都沒有,因為這里應該是PE文件來處理的,但是我們是dump復制出來的,所以這里我們需要自己添加沒有的信息

          Name不用改

          Misc表示未對齊的真實內存中的大小也不用改

          VirtualAddress內存中的一個rva也不用改

          SizeOfRawData文件中的對齊大小這個由于我們是從加載到內存中再Dump出來的,所以文件和內存已經沒有必要區分開了,直接和Msic值一樣就好

          PointerToRawData表示foa,這里也直接用rva就好了

          后面的可以不用處理

          這樣把三個區段頭都修改好

          修復好了三個區段頭后,可以很清楚得看到程序的變化

          圖標回來了!雖然這個時候還無法運行

          修復導入表

          上面修復了PE文件的區段頭,但是由于導入表沒有修復還是無法使用,這里用LordPE查看該exe的導入表就可以看到dll的導入表是錯的

          正常的導入表是通過操作系統對字符串來處理然后得到該字符串的函數名稱對應的函數地址變成地址給exe使用

          但是這里由于我們是把exedump出來了,所以就是把操作系統變成的函數地址給弄了出來,而不是函數名稱字符串,所以這里還需要修復,把地址修復改成函數名稱

          手動修復導入表:從od里面把原來的導入表地址函數名稱全部提出來,然后再在dump出來的exe里面開辟一個字段來存儲導入表,再把PE文件里面的導入表指向指到開辟的導入表里面就好了

          在硬編碼里面,有幾種對于call函數的編碼,但是如果編碼的開始是FF15 xxx的就表明是對導入表里面的函數調用

          這里可以很明顯的看出來

          然后再進入到FF15的call的地址里面查看

          可以很明顯得看到各種各種的導入表函數,拿到之后再按照前面的方式添加進去就好了

          根據導入表的性質來修復

          這里采用一個工具來處理

          https://down.52pojie.cn/Tools/PEtools/ImportREConstructor%201.7e.zip 解壓密碼:www.52pojie.cn

          添加進程,修改OEP和大小,然后獲取導入表,同時還需要進入OD用剛剛的辦法查看是否把所有的dll都包含了,這里是確實只有兩個dll,如果沒有可以嘗試修改大小來處理

          然后使用轉存到我們剛剛弄的.exe文件就好了,正常的話下面會出現一個保存成功

          這次再查看導入表

          就是很正常的了

          再查看它的區段

          可以看到多了個區段,和我們前面想的一樣手動添加了一個區段來專門修復導入表.

          總結 UPX脫殼

          首先采取找到OEP,然后呢對整個PE文件進行dump出來,然后再修復,修復需要修復PE的區段頭和導入表

          154864.html

          標簽:upx脫殼-

          網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...

          在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...

          在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...

          1萬韓元是多少?1韓元=0.0059元1元=170.8613韓元10000韓元=58.527元2020年3月3日1萬韓元58元一萬韓元是什么概念?一萬韓元約合54.4708元。一萬韓元的購買力大約是:(1)如果能吃兩頓(每頓5000元),便宜點的面有3000、3500、4500元。(2)零食。韓國的零食就像的膨化食品一樣。一般一個包1500-2500元。(3)肯德基,麥當勞!早餐一般3400元,午...

          為什么PS打開的文件取消不了鎖定?要解鎖ps中的所有圖片,只需點擊圖片左側的圖層鎖定按鈕,點擊解鎖界面即可。PSl鏈接圖層已經鎖定怎么辦?雙擊圖層面板中鎖定的圖層,選擇【確定】解鎖;點擊圖層右側的小鎖圖標解鎖;【索引】圖層,然后選擇【圖像】-【模式】-【RGB顏色】解鎖;當圖層上方的鎖按鈕被鎖定后,點擊圖層右側的小鎖圖標可以全部解鎖,點擊上方的鎖圖標可以解鎖相應的鎖。ps圖層怎么使用鎖定?1.首先...

          ps4發售日期?PlayStation 4官方簡稱:PS4It 這是索尼互動娛樂公司推出的一款家用視頻游戲機。2013年11月15日,PS4在北美正式上市[11]。在第一批貨中,不到0.4%的機器會出現名為 "藍光碰撞和。11月29日,PS4在歐洲、澳洲、新西蘭和南美發售。2014年2月14日,索尼發布了面向手機和平板電腦的日文版服務應用《PlayStation App》。2月22日,PS4在日...

          TOP
          国产初高中生视频在线观看|亚洲一区中文|久久亚洲欧美国产精品|黄色网站入口免费进人
          1. <nobr id="easjo"><address id="easjo"></address></nobr>

              <track id="easjo"><source id="easjo"></source></track>
              1. 
                

              2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
              3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>