• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            小默

            [zz]失業的娛樂-IDA逆向工程入門(二)

            【文章標題】: 失業的娛樂-IDA逆向工程入門(二)-匯編程序(1)
            【文章作者】: layper
            【作者郵箱】: layper@yahoo.com.cn
            【作者主頁】: http://blog.csdn.net/layper/
            【下載地址】: 自己搜索下載
            【作者聲明】: 只是感興趣,沒有其他目的。失誤之處敬請諸位大俠賜教!
            --------------------------------------------------------------------------------
            【詳細過程】
              這個是第二篇,入門就要從最簡單的開始!!!!!!!!
              
              為什么選匯編程序,因為在IDA逆向出來的就是匯編語言.所以選這個是最好入門的.在這之前你先準備好幾樣工具,IDA,masm32匯編工具包并安裝好,
              在radasm設置好你的路徑.
              
              (一)最簡單的win32匯編程序源碼
              hellow.asm
              
              .386
              .model flat,stdcall
              option casemap:none
              include WINDOWS.INC
              include user32.inc
              include kernel32.inc
              includelib user32.lib
              includelib kernel32.lib
              .data
              sztitle db "你好",0
              sztext db "你好!祝你有個好的開始!!!",0
              .code
              start:
              invoke MessageBox,NULL,offset sztext,offset sztitle,MB_OK
              invoke ExitProcess,NULL
              end start
              
              
              radasm默認編譯.無資源段
              
              
              
              (二)IDA自動識別的反匯編代碼(未優化直接保存)
              
              
              
              ;
              ; 賞屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯?
            ; ?This file is generated by The Interactive Disassembler (IDA)      ?
            ; ?Copyright (c) 2006 by DataRescue sa/nv,  <ida@datarescue.com>      ?
            ; ?Licensed to: Paul Ashton - Blue Lane Technologies (1-user Advanced 03/2006)  ?s
              ; 韌屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯?
            ;
              ; Input  MD5   :  10721E858F8E4DA3413D6FBFAE63E7B3
              
              ; File Name   :  D:\lyp\hellow\hellow.exe
              ; Format      :  Portable executable for  80386 (PE)
              ; Imagebase   :  400000
              ; Section 1. (virtual address 00001000)
              ; Virtual size      : 00000026 (   38.)
              ; Section size in file    : 00000200 (  512.)
              ; Offset to raw  data for section: 00000400
              ; Flags  60000020: Text Executable Readable
              ; Alignment  : default
              
                  .686p
                  .mmx
                  .model flat
              
              ; 屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯?

              ; Segment type:  Pure code
              ; Segment permissions: Read/Execute
              _text    segment  para public 'CODE' use32
                  assume cs:_text
                  ;org 401000h
                  assume es:nothing, ss:nothing, ds:_data, fs:nothing, gs:nothing
              
              ; *************** S U B  R O U T  I N E ***************************************
              
              
                  public start
              start    proc near
                  push  0    ; uType
                  push  offset Caption  ; "你好"
                  push  offset Text  ; "你好!祝你有個好的開始!!!"
                  push  0    ; hWnd
                  call  MessageBoxA
              
                  push  0    ; uExitCode
                  call  ExitProcess
              
              start    endp
              
              ; [00000006 BYTES: COLLAPSED FUNCTION MessageBoxA. PRESS KEYPAD  "+" TO EXPAND]
              ; [00000006 BYTES: COLLAPSED FUNCTION ExitProcess. PRESS KEYPAD  "+" TO EXPAND]
                  align 200h
              _text    ends
              
              ; Section 2. (virtual address 00002000)
              ; Virtual size      : 00000092 (  146.)
              ; Section size in file    : 00000200 (  512.)
              ; Offset to raw  data for section: 00000600
              ; Flags  40000040: Data Readable
              ; Alignment  : default
              ;
              ; Imports from kernel32.dll
              ;
              ; 屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯?

              ; Segment type:  Externs
              ; _idata
              ; void __stdcall ExitProcess(UINT uExitCode)
                  extrn __imp_ExitProcess:dword ;  DATA XREF: ExitProcessr
              
              ;
              ; Imports from user32.dll
              ;
              ; int __stdcall  MessageBoxA(HWND hWnd,LPCSTR lpText,LPCSTR lpCaption,UINT uType)
                  extrn __imp_MessageBoxA:dword ;  DATA XREF: MessageBoxAr
              
              
              ; 屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯?

              ; Segment type:  Pure data
              ; Segment permissions: Read
              _rdata    segment  para public 'DATA' use32
                  assume cs:_rdata
                  ;org 402010h
                  db  54h  ; T
                  db  20h
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db  6Ah  ; j
                  db  20h
                  db    0
                  db    0
                  db    8
                  db  20h
                  db    0
                  db    0
                  db  4Ch  ; L
                  db  20h
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db  84h  ; ?
                db  20h
                  db    0
                  db    0
                  db    0
                  db  20h
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db  76h  ; v
                  db  20h
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db  5Ch  ; \
                  db  20h
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db  9Dh  ; ?
                db    1
                  db  4Dh  ; M
                  db  65h  ; e
                  db  73h  ; s
                  db  73h  ; s
                  db  61h  ; a
                  db  67h  ; g
                  db  65h  ; e
                  db  42h  ; B
                  db  6Fh  ; o
                  db  78h  ; x
                  db  41h  ; A
                  db    0
                  db  75h  ; u
                  db  73h  ; s
                  db  65h  ; e
                  db  72h  ; r
                  db  33h  ; 3
                  db  32h  ; 2
                  db  2Eh  ; .
                  db  64h  ; d
                  db  6Ch  ; l
                  db  6Ch  ; l
                  db    0
                  db    0
                  db  80h  ; ?
                  db    0
                  db  45h  ; E
                  db  78h  ; x
                  db  69h  ; i
                  db  74h  ; t
                  db  50h  ; P
                  db  72h  ; r
                  db  6Fh  ; o
                  db  63h  ; c
                  db  65h  ; e
                  db  73h  ; s
                  db  73h  ; s
                  db    0
                  db  6Bh  ; k
                  db  65h  ; e
                  db  72h  ; r
                  db  6Eh  ; n
                  db  65h  ; e
                  db  6Ch  ; l
                  db  33h  ; 3
                  db  32h  ; 2
                  db  2Eh  ; .
                  db  64h  ; d
                  db  6Ch  ; l
                  db  6Ch  ; l
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
                  db    0
              _rdata    ends
              
              ; Section 3. (virtual address 00003000)
              ; Virtual size      : 0000001E (   30.)
              ; Section size in file    : 00000200 (  512.)
              ; Offset to raw  data for section: 00000800
              ; Flags  C0000040: Data Readable  Writable
              ; Alignment  : default
              ; 屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯?

              ; Segment type:  Pure data
              ; Segment permissions: Read/Write
              _data    segment  para public 'DATA' use32
                  assume cs:_data
                  ;org 403000h
              ; char Caption[]
              Caption    db '你好',0             ; DATA XREF: start+2o
              ; char Text[]
              Text    db '你好!祝你有個好的開始!!!',0 ; DATA XREF: start+7o
                  align 200h
              _data    ends
              
              
                  end start
              用radasm編譯成功,不用修改!!!
              
              (三)比對文件
              
              (1)模式定義
              相同度:
              
              .386                                                .686p                      ;不同
              無                                                  .mmx
              .model flat,stdcall                                 .model flat        
              option casemap:none                                 無                         ;不同
              
              我的IDA默認的為686p模式,model語句無語言模式,無option語句.
              
              (2)inc文件,lib文件去向
              
              源文件中的
              include WINDOWS.INC
              include user32.inc
              include kernel32.inc
              includelib user32.lib
              includelib kernel32.lib
              消失在代碼中,要尋找回他們!!
              這幾個語句其實就是連接系統的dll文件的,在反匯編代碼中尋找user32.dll,kernel32.dll,找到這里
              ; Imports from kernel32.dll
              ;
              ; 屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯?
              
              ; Segment type:  Externs
              ; _idata
              ; void __stdcall ExitProcess(UINT uExitCode)
                  extrn __imp_ExitProcess:dword ;  DATA XREF: ExitProcessr
              
              ;
              ; Imports from user32.dll
              ;
              ; int __stdcall  MessageBoxA(HWND hWnd,LPCSTR lpText,LPCSTR lpCaption,UINT uType)
                  extrn __imp_MessageBoxA:dword ;  DATA XREF: MessageBoxAr
              
              注釋很明白了,輸入表有兩個dll在_idata段,include語句的在_idata段找尋.
              
              (3)段定義的變化
              源代碼中段定義是這樣
              .段名
              而反匯編中的段定義
              段名    segment  para public 'DATA' use32
                  assume cs:_data
              段名    ends
              傳統的dos匯編寫法.
              
              (4)段的增減
              我們通過比對,發現段的數量跟我們原本的不一致
              原本我們只有兩個段
              .data和.code段,而反匯編后變成
              .text和.idata和.rdata和.data段
              經過仔細辨認你就可以發現
              反匯編的text段就是源代碼中的.code段,data段是代碼段,.idata和.rdata是編譯器生成的,而idata是尋找include語句的地方,
              .idata基本沒什么用處,可以刪掉.
              
              (5)數據段
              通過比對發現基本上一致無什么增加,增加了一個    align 200h
              刪掉即可.
              
              (6)代碼段變化
              入口函數變化
                              public start
              start    proc near
                  push  0    ; uType
                  push  offset Caption  ; "你好"
                  push  offset Text  ; "你好!祝你有個好的開始!!!"
                  push  0    ; hWnd
                  call  MessageBoxA
              
                  push  0    ; uExitCode
                  call  ExitProcess
              
              start    endp
              
              。。。。。。
              
              。。。。。。。
              
                  end start
              
              注意end start放在了所有段后面
              
              到這里我們大體上看完這個程序反匯編的大體輪廓。
              
            --------------------------------------------------------------------------------
            【經驗總結】
              (1)模式定義少了語言模式和opention語句,我們要看情況是否加回上去。
              (2)include語句尋找_idata中的dll名,得到常用包含庫文件.
              (3).rdate段不用看,可以刪掉
              (4)入口開始處尋找start.
              
            --------------------------------------------------------------------------------
            【版權聲明】: 本文原創于看雪技術論壇, 轉載請注明作者并保持文章的完整, 謝謝!

                                                                   2007年03月02日 13:56:14

            posted on 2009-12-25 12:10 小默 閱讀(701) 評論(0)  編輯 收藏 引用 所屬分類: Tools

            導航

            統計

            留言簿(13)

            隨筆分類(287)

            隨筆檔案(289)

            漏洞

            搜索

            積分與排名

            最新評論

            閱讀排行榜

            亚洲精品乱码久久久久久蜜桃不卡 | 国产亚洲综合久久系列| 久久久久久亚洲AV无码专区| 国产∨亚洲V天堂无码久久久| 国产成人99久久亚洲综合精品| 色综合合久久天天给综看| 日韩精品无码久久久久久| 国产精品天天影视久久综合网| 久久播电影网| 2021久久国自产拍精品| 亚洲欧美成人久久综合中文网 | 久久国产精品久久久| 久久国产精品一区| 久久亚洲欧美国产精品| 人妻丰满?V无码久久不卡| 丰满少妇人妻久久久久久 | 久久午夜无码鲁丝片| 久久婷婷人人澡人人| 久久久婷婷五月亚洲97号色| 久久99久久无码毛片一区二区| 麻豆成人久久精品二区三区免费| 久久激情五月丁香伊人| 久久精品嫩草影院| 久久综合给久久狠狠97色| 久久久久久综合网天天| 久久无码精品一区二区三区| 国产叼嘿久久精品久久| 亚洲国产天堂久久综合网站 | 久久精品国产影库免费看| 午夜精品久久久久久中宇| 久久亚洲日韩看片无码| 久久中文字幕精品| 色天使久久综合网天天| 性做久久久久久免费观看| 欧美激情精品久久久久久久九九九| 久久婷婷五月综合成人D啪| 国产999精品久久久久久| 国产99久久久国产精品~~牛| 精品综合久久久久久97超人| 久久亚洲精品视频| 久久天天躁狠狠躁夜夜av浪潮 |