MRCTF XOR 無法生成反彙編的處理

2022-09-14 09:45:07 字數 1189 閱讀 5104

主程式,無法生成偽**

由此分為兩種方法即:

直接看反彙編

解決問題,嘗試生成偽**

輸入與輸出

判斷輸入長度是否為0x1b,其中al為eax的低8位

將輸入的字元每個與當前字元所在下標異或並與金鑰對比

演算法很簡單

a = [0x4d,0x53, 0x41, 0x57, 0x42, 0x7e, 0x46, 0x58, 0x5a, 0x3a, 0x4a, 

0x3a, 0x60, 0x74, 0x51, 0x4a, 0x22, 0x4e, 0x40, 0x20, 0x62,

0x70, 0x64, 0x64, 0x7d, 0x38, 0x67]

flag = ''

for i in range(0x1b):

flag += chr(a[i]^i)

print(flag)

指令碼得flag

flag

無法生成偽**兩種可能;

1、ida無法識別出正確的呼叫約定。

2、ida無法識別出正確的引數個數。

總之就是函式出了問題,其實只要先把scanf和printf生成偽**,就能生成main

剩餘方法相同,其實原因上是因為printf的引數,按道理來說是要改一下main函式的,但不知道為什麼直接生成了

反彙編 迴圈

includeint main 00401010 55 push ebp 00401011 8bec mov ebp,esp 00401013 83ec 44 sub esp,44 00401016 53 push ebx 00401017 56 push esi 00401018 57 push ...

反彙編簡介

在傳統的軟體開發模型中,程式設計師使用編譯器 彙編器 鏈結器中的乙個或者幾個建立可執行程式,為了回溯程式設計過程,可以使用各種工具來撤銷彙編和編譯過程,這些工具就叫做反彙編器和反編譯器。反彙編器 以機器語言作為輸入,得到組合語言形式的輸出結果 反編譯器 以機器語言作為輸入,得到高階語言形式的輸出結果...

反彙編快速入門

我從事組合語言研究大概幾年前,因為是我為了開發sepl計算機語言編譯器。雖然到現在還沒有開發出 來,但是已經看到曙光了。為了研究彙編,我從反彙編入手,做了破解,脫殼,除錯等。但是彙編對我來說一直是讀天書,沒有任何突破。直到最近幾天我有了重大發現。有人說做黑客從反彙編sqlserver.exe檔案開始...