日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Windows PE变形练手1-用PE自己的机器码修改自己的逻辑

發(fā)布時間:2025/6/17 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Windows PE变形练手1-用PE自己的机器码修改自己的逻辑 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

PE變形練手1-PE自己的機器碼修改自己的邏輯

????就是找一個PE文件,用自己的部分代碼部分覆蓋或者而修改自己另一個代碼部分的補丁姿勢(現實中使用很少,極少數破解可以用到。這次例子目的是了解PE)。

第一個實驗,寫個例子。然后把函數1和函數2調換一下。


代碼如上,很簡單。先輸出111,在輸出222.根據:


可知,相關FOA???main?0x440??main1?0x400??main2?420


兩個函數如上,最后C3return,仔細觀察,是下面參數不同:


OK,好辦,直接替換這兩個參數就行了唄:


然而發(fā)現,并不性。還是先輸出111,有輸出222。當時我還傻愣半天,還找同事問問。怎么這么簡單,改個東西。我卻失敗了。額...結果我輸了一塊雪糕。原因是這兩個函數根本沒有被調用到。比如這樣。我上來就C3,發(fā)現程序繼續(xù)運行。


原因是因為直接被優(yōu)化掉了,編譯器編譯的時候直接把這兩個函數的字節(jié)碼弄到了調用的地方,看反匯編就知道了:


相關編譯選項是這兩個:


我們可以把?內聯函數擴展禁用:


????這樣就調用函數了,這個時候再去改函數就有反應了。這里不上圖了,我本地測試發(fā)現可以。


下面我試了下編譯選項,總結了一些組合產生的結果(VS2015?C++)

(1)優(yōu)化:完全??內聯函數擴展:開

?

(1)優(yōu)化:禁用???內聯函數擴展:開

(2)優(yōu)化:禁用???內鏈函數擴展:關

(3)優(yōu)化:完全???內鏈函數擴展:關


例子2,模擬一個最簡單的破解:


要想在錯誤密碼或者不輸入密碼的時候走yes函數,姿勢有很多:

(1)OD直接加載起來,在判斷密碼正誤的地方改下邏輯,可以直接改判斷部分或者if不滿足后執(zhí)行的函數地址(如果是實際情況,推薦這個)。

(2)直接上來把PE入口函數指向yes,這樣可以直接跑yes函數了。但是這樣的缺點不會執(zhí)行其他別的邏輯代碼了,而且執(zhí)行完,應該不會退出。我記得是退出不了。或者再在后面自己追加退出代碼。

(3)覆蓋部分主函數里面的代碼,讓他進入主函數后直接就跳轉到yes函數了。(這個思路也行)。

(4).....還有很多姿勢。下面就簡單實現下上面三個姿勢。雖然沒什么用,練著玩,為接下來的復雜PE變形做鋪墊。


實現姿勢1OD加載走走邏輯破解:



OK這就行了,比較簡單,不細說了。


實現姿勢2:改PE入口的地址,直接讓他跑yes函數:

看下入口:


之前是什么都不管,反正RVA1000對應FOA400


OK?yes函數在這里,41000處,直接把13F2?改成1000就行了:


這樣雙擊就直接破解了:


和預想一樣,點擊確定后卡在這個黑色界面上了:


實現姿勢3:直接代碼覆蓋(這個不通用,之后在解釋):

?

? ? 直接把400-420的函數yes?代碼覆蓋到420-440no里,如果no里代碼比較多,可以直接C3返回,但是上面也有很多坑,之后會的例子里會解釋。

?

?

?

?

?

總結

以上是生活随笔為你收集整理的Windows PE变形练手1-用PE自己的机器码修改自己的逻辑的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。