改個1,來個跳轉

2021-08-22 10:14:04 字數 792 閱讀 1806

首先有折磨乙個可執行程式,測試並得到結果如下:

我們需要做的就是讓他允許我輸入的使用者名稱和密碼。

我們可以知道這樣的可執行程式一定有乙個接受輸入字串的函式,如:

getdlgitemtexta(『a』是ascii碼的意思)。

首先我們先試試這個程式,乙個往下走,在彈出視窗的那個位址設斷點,跟進去,再設斷點,再跟,你會發現,最後陷入迴圈。這樣我們並不能找出有用的資訊,那

我們嘗試尋那個函式,引導程式,ctrl+g,輸入該函式的名稱:

設斷點,過載,

f9執行,隨便輸入使用者名稱和密碼,check,然後到斷點出。

這時候可以看見在此斷點的位置出現了getdlgitemtexta函式來接受你輸入的值。

然後繼續往下走,看看接受的我輸入的值後,程式幹了什麼,走著

可以看見在這個,,,我也不知道什麼視窗的發現了你輸入的使用者名稱,

我們呢到記憶體裡瞅瞅,去**瞅呢,看彙編,我們知道,到當前的esp+4c:

看到記憶體裡有「qwert」,其實我們還可以輸入0018f910,就是那個不知名的視窗所顯示的位址。

可以在暫存器視窗看到使用者名稱,密碼都存入了暫存器。

在這裡,eax是上面函式的返回值,(規定,在任何編譯器,和任何語言中,eax都是用來存返回值的),然後與eax比較,相等則跳轉,這裡不讓他跳轉,

標誌暫存器的z位置為0或nop填充這一句,不讓他跳轉。再f8走著。

look this:

成功了。然後複製到可執行檔案->備份->儲存檔案。

檢視結果:

是不是很easy!

Linux使用join a1來合併兩個檔案

要合併以下兩個檔案,一起合併在一起,合併到1.txt中 1.txt jerry 20 alice 30 d id 40 2.txt jerry man alice woman d id 40 合併的後的1.txt jerry 20 man alice 30 woman dwww.cppcns.com...

利用兩個棧S1,S2來模擬乙個佇列

利用兩個棧s1,s2來模擬乙個佇列,已知棧的4個運算定義如下 push s,x 元素x入棧 pop s,x s出棧並將出棧的值賦給x stackempty s 判斷棧是否為空 stackoverflow s 判斷棧是否滿 如何利用棧的運算來實現該佇列的3個運算 形參根據要求自己設計 enqueue ...

1 如何根據乙個等式來判斷這個系統採用的幾進製

1 在某個系統中,等式15 4 112成立的話,那麼這個系統採用的 6 進製 a.6 b.8 c.12 d.16 n 5 4 n 2 n 2 1 對等式兩邊同時 n,20 n 2 n 注 2 n 可為 0,1,2,所以 20 n 最起碼得為2 2 對等式兩邊同時整除n後再 n,4 20 n n 1 ...