step1 writeup —— 輸入作爲函數參數

Hint

暫無HINT

題目描述:

Do you know SendMessage ?


Writeup:

在IDA字符串窗口中找到字符串“The password is:”,於是根據交叉參考找到了相關函數。

OD同時定位到該函數,單步調試,發現有兩個SendMessageA函數,兩個函數的參數形式相同,第一個Message爲WM_GETTEXT,將獲取到的name存入棧中。第二個Message未知,但由於兩個SendMessageA函數的參數形式相同,猜測第二個Message同爲WM_GETTEXT,且將獲取的key存入棧中。


可以看到eax-200E4h爲Message類型參數,WM_GETTEXT爲0Dh,所以eax爲200E4h+0Dh=131313D,eax爲StrToIntA函數的返回值,因此輸入的name應爲“131313”。

後面有個GetProcAddress函數,該函數的第二個參數(庫函數名稱)爲輸入的key與程序中的一個固定字符串異或而得


返回值存入ebp+arg_8。在後面有個打印password的函數,但是在調用的時候並不是call  MessageBoxA,而是call  [ebp+arg_8],因此猜測GetProcAddress函數獲取的是MessageBoxA函數的地址,因此GetProcAddress函數的第二個參數爲“MessageBoxA”,因而key = MessageBoxA xor 固定字符串。

後面還有最終password的計算方法,但是到這裏有了name和key就已經可以讓程序自動彈出password了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章