close

請勿轉載此文章

 

 [ 概說 - PostMessageA 的 NP攔截方式 ]

 

NP攔截PostMessage的方式很簡單,就把程式的開頭加上一個JMP把你跳掉回不去,使你BOT程式當掉
   因此,我們必須將原有的程式還原使用,才可不被NP破壞您的程式架構,通常沒有成功通過NP檢察,您
   都會收到一個訊息「XXXX 發生問題,必須關閉,僅此致歉。」(XP平台)

 

在討問這個問題時,您必須要對System提供的DLL,API有所了解,以及PostMessageA的使用方法。
   使用方法不說明,故您必須對此PostMessageA這個function有所了解,此文只說如何通過NP。

 

MLBOT 的 Re-hooked 也是利用此方法過NP的!
----------------------------------------------------------------------------------------------------------------------

 

 [ 原理 ]

 

到底如何不要讓程式被NP跳掉呢?
   讓我們來看一下,NP啟動時,他對楓之谷做了什麼蠢事
   比較一下兩張圖不同的地方
----------------------------------------------------------------------------------------------------------------------

 

【圖1】-NP啟動前,一切都正常
np  

 

【圖2】-NP啟動後,程式碼竟然變了
np-1  
----------------------------------------------------------------------------------------------------------------------

 

 [ 為什麼有了這個JMP會導致當機? ]

 

因為該JMP位址的記憶體是空的,回不來,而且原本該執行的程式碼也被吃掉了一些
----------------------------------------------------------------------------------------------------------------------

 

 [ 如何解決JMP問題呢 ]

 

方法可能有很多種,在【圖1】和【圖2】時,其實就透漏了一種方法

 

方法1:將整個User32.dll的PostMessageA部分Re-source

 

方法2:將失去的程式補齊,看一下以下範例  

  1. mov edi,edi
  2. push ebp
  3. mov ebp,esp
  4. jmp PostMessage+5
複製代碼


  說明:由於NP吃掉那5個Bytes,因此可在自己的程式,寫下了這幾行去呼叫PostMessageA,NP把那5個Bytes改掉
    我們沒辦法去修改他,所以可以在自己的程式把它補齊後再Jmp到原本+5的地方

----------------------------------------------------------------------------------------------------------------------

 

[ Q&A專區 ]
Q. 為何不能直接把jmp 458a7710直接改成jmp 77D1CB8A,讓程式繼續正常運作?
A. 有兩個原因:
     1.直接jmp到下一行,還是沒有還原原本NP吃掉的那些程式碼,一樣會當掉
     2. 此位址,有另外的CRC檢查,改了之後不是斷線就是重開機


Q. 為何我不能直接把那5 byte還原? 這樣也不會有上面那個問題「程式碼還是有少」了呀?
A. 別忘了,還有第二點,除了400000-7xxxxx外,還有另外的CRC CHECK

Q. 我能在它jmp的位址(458a7710) Alloc一個空間,並放上原本的程式碼並跳回原處嗎?
A. 答案是有可能的,意即不太確定,目前無實測!在ME裡,可以設定Alloc於哪<條件是要能過HSSDT>,在458a7710 alloc一個空間
    放上原碼再跳回即可,範例:
先用CE的DLL,CALL VAE(hProcess , 起始地址 , 長度 , 類型 , 寫入讀取模式),為458a7710 ALLOC 10 BYTES
458a7710: //(假設此空間,已被ALLOC)
mov edi,edi
push ebp
mov ebp,esp
jmp 77D1CB8A
這樣的程式,即可完全BYPASS PostMessageA
但是, 458a7710 這個位只是隨機抽選的,每此都不一樣 故此方法較不可靠

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 UM程式研究日誌 的頭像
    UM程式研究日誌

    UM程式研究日誌

    UM程式研究日誌 發表在 痞客邦 留言(0) 人氣()