Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

調試器原理與架構

1,111 views

Published on

  • Be the first to comment

調試器原理與架構

  1. 1. a27@hack-stuff.com2013年6月1號
  2. 2.  調試器駭客之瞳 追蹤一個進程運行的狀態 追蹤一個進程的狀態又大致上分為兩種▪ 動態分析追蹤 & 靜態分析追蹤 調試器經常使用於▪ Exploit程序▪ Fuzzing測試框架運行漏洞挖掘▪ 惡意軟件分析
  3. 3. • 白盒調試器 開發平台 & IDE 通常會配置的內建調試器 提供開發者更高級別的進程控制能力 黑盒調試器 目標行程的跟蹤 用戶態調試器(ring 3)V.S 內核態調試器 (ring 0)
  4. 4.  原始且富有強大功能調試器 微軟WinDbg OlehYuschukollyDbg 標準的GUNgdb 駭客能自行編寫腳本插件 ex:hook 純python的調試器PyDbg 有python調試庫Immunity Debugger
  5. 5.  CPU內有八個通用暫存器 : EAX、EDX、ECX、ESI、EDI、EBP、ESP、EBX 每種暫存器都有它不同的功用 稍後會個別講解
  6. 6.  FILO的參數結構 堆疊由內存高的位址向內存低的位址增長 EX :int my_socks(a27_one, a27_two, a27_three)組語型態push a27_onepush a27_twopush a27_threeCall my_socksHint:ESP暫存器用於紀錄當前堆疊的頂部EBP暫存器用於紀錄當前堆疊的底部返回地址a27_onea27_twoa27_three堆疊基地址ESP暫存器EBP暫存器堆疊增長方向進程執行方向
  7. 7.  ollDbg
  8. 8.  IDA-pro
  9. 9.  工具 : Lazy Engine 鎖定記憶體 更改描述 更改地址 更改數值 更改類型
  10. 10. 題目 :[Neo]Hmm... there is no clue to track down thecriminals.But, there is one way I love to use.Getting myself into the virtual world.It risks my life, but saving the world is worthrisking!I will get into the virtual world for clues!
  11. 11.  看到遊戲感覺就是把它破完key就會彈出來 先去打大魔王,發現空白鍵一直按著有機會把牠打死,可是我懶(因為失敗很多次) 找存大魔王的血量的記憶體位址 去鎖定記憶體,更改記憶體內容
  12. 12. 把999999改成0
  13. 13.  F423F(十六進位)999999(十進位)
  14. 14.  題目:We think something is hidden to this file…這句話不是廢話嗎…
  15. 15.  這個PE文件不是32位元的文件類型 放進64的VM 一開始的歡迎詞(感覺等等用的到)
  16. 16.  思考模式 沒有動作 單純的背景 動漫 蠻美的
  17. 17.  找到最一開始的歡迎詞 接著向下繼續分析
  18. 18.  同一個Functions windows裡有歡迎詞跟恭喜詞 Key應該在裡面?!
  19. 19.  if ( Msg != 273 ) returnDefWindowProcA(hWnd, Msg, wParam,lParam); if ( (unsigned__int16)wParam == 1 ) {GetWindowTextA(::hWnd, &String, 128);SetWindowTextA(hWnd, &String); v16 = 5; do { String -= v16; String ^= 3u; --v16; } while ( v16 ); v17 = 4; do { v23 -= v17; v23 ^= 4u; --v17; } while ( v17 ); v18 = 3; do { v24 -= v18; v24 ^= 5u; --v18; } while ( v18 ); v19 = 2; do { v25 -= v19; v25 ^= 6u; --v19; while ( v19 ); v20 = strcmp(&String,"C;@R"); if ( v20 ) v20 = -(v20 < 0) | 1; if ( v20 ) { MessageBoxA(hWnd,";;", "ohtahacker", 0); exit(0); } MessageBoxA(hWnd,"congratulation","ohtahacker", 0); 加密的地方找到了
  20. 20.  從IDA & OD 看出簡單的迴圈 Pseudocode ex : while(LoopCount--) { InputText[i] -= LoopCount; InputText[i] ^= XorKey; }
  21. 21.  正確的flagSECU

×