標籤:問題 re c 代碼 工作 時間
教程倒沒有,說一下脫殼感想吧!
我們拿到一個殼,如想深入瞭解,非深入跟蹤不可,那是沒什麼捷徑可言的!你要付出的是大量的時間和思考分析,如果不能做到,請放棄吧,也是對自己的身心的一種尊重和關心!
如果你是一個期代脫殼tips的人,做起脫殼來很容易感到空虛的...
(工具以Ollydbg為例)
遇上一個陌生殼,請不要太慌張,做一些簡單的分析先,明確一下殼的類型、層級。就 saft103 說說,雖然脫殼論壇已經有介紹和一些“殼霸”對其手到拿來,但我們可以先拋開這些道聽途說,認真地跟蹤一下(可以參考一下我的一篇夢遊之說)。
先運行這個殼,瀏覽一下系統活動進程,我們初次發現它是個單進程,用Ollydbg附加一下這個“單進程”,發現不行,原來它是“明花有主”的,為了找出“主人”,我們要從頭展開進一下跟蹤(因為我們已經假設自己對殼什麼都不認識)。
我們會有一些結論,花指令不耐用(白話:掗碴),異常發生都是順序向下走的,於是我們如果再遇到同樣類似的情況(最後到OEP指令前,我們可以遇到同樣的情況,不用每個異常都Into),就可以不一一跟蹤了,用滑鼠拉動捲軸向下,留意可疑的地方,在這些地方用上下鍵查看指令,如果找到“零佘不同”--沒法說清楚是一種感覺來的,直接在那裡下斷,應該是關鍵的執行或解碼!我們可以發現時間反跟蹤做得比較單一呆版,只要補丁其相關的 API 就能殺它個乾乾淨淨;
在“夢遊之說”中,我們發現 殼 會實現注入功能(這是我們發現殼的第一個特色,利用注入依附系統服務程式,使調試難度增大,一般來說我們不大可能調試系統服務程式的線程,所以父進程穩居“教宗”地位,神聖而不可侵犯),感覺如同“金蟬脫殼”般,而且相關的操作我們都能一目瞭然,如果這時這個是你陌生的認識,趕快學一把(偶是,就翻了一下API手冊和DelphiChm手冊,幸好能找到,就認識認識)!父進程退出設計成壓入堆棧運行,雖然不是什麼新鮮事,但是個妙的動作來的,很乾淨地了斷父進程,值得學習!
好了,明確了殼的動作,我們要自己改變其運行父進程。在父進程運行中,同樣會有反跟蹤的,自己留意吧。首先,我們要問我們自己監視父進程要做什麼監視?我們想出來再跟蹤:父進程必定要運行子進程,子進程哪來?是同一個祖宗的呀!但它會走不一樣的路成長。它的成長是父進程指引的,所以我們要擷取父進程的“指引”,GetContext和SetContext是父進程指引子進程的主要方式來的,當然你是可以從中獲得“指引”的方向;另外父進程也會負責幫子進程初始化和解碼,自己應該想到 WriteProcessMemory 和 ReadProcessMemory !通過分析父進程代碼和跟蹤我們可以發現,父進程只負責一次初始化和一次解碼,其餘的只監視子進程有否自行問“長短”。(其實父進程和子進程之間的聯絡是很清晰的,只要你的程式碼分析能力很強,就可以少用動態跟蹤,偶不行,只能在它們之間來回奔走,開了兩個Ollydbg)
子進程也有對父進程的檢測,發現父親有“外遇”,就會宣告“脫離父子關係”。子進程會遇上車禍“非法駕駛”,造成“失血過多”,也會要求索取父進程的 DNA ,如果 DNA 不符,就會造成“輸血失誤”,子進程就會“誤服哀哉”!
如果上面沒有問題,子進程就繼續生活下去,脫態換骨[解碼],在長大前會不斷“長毛”[iat增肥加密計劃],最後就Show出成年後的 StolenCode Show,再之後就在父進程的無形庇護下獨立生活下去。
看完了殼的ShowTime後,我們應該心裡有數,脫殼已經不是Impassable,我會想到直跑子進程一直到脫殼,這時我又想到了“殼魔”fxyang的話,再回頭看看它先前的指令碼,哈哈,原來我們最終都走差不多的路...,學脫殼做脫殼不是一種炫耀,而是從中找出自己的方向,不認識的不明白的要多問自己為什麼,我經常都是自己解決的,印象深刻,不必去死記什麼bp 這個,CD那個B之類的,遇到新奇趣怪的的要 Mark in your Memory(腦和儲存File)。
這個殼給我的感覺是溫柔了點,好些地方是做得呆板單一,比如Game Over的地方做得太認真,一點也不含糊迷惑,但都要有一定的工作量才能脫好的,另外資源部分方面做了隱藏,解壓後才出現,又再做毛手毛腳,別忘了要Dump完整!如果把這個殼的每一個點都照出來,那樣脫殼就太沒意思了,猶如行屍走肉,永遠得不到脫殼的真正樂趣(或者你會以脫殼破解某個加殼軟體的功能限制為樂趣,但我說的不是這個)!
如果不幸遇上變態殼,呵呵,不要死頂,Take it Easy,Give up in some time, some time in charge!每個人的能力和認識都不同,沒必要去跟人比,除非你們有約定,要比就要比自己,比過去,比現在,還是將來...那是你的事!
如果這草稿不幸被列為精華,希望能為你找到自己的脫殼方向--適當要問自己為什麼...