剛開始學,菜鳥一b。
下面直接進入主題。
首先練習乙個脫殼。aspack 2.12 -> alexey solodovnikov
我們嘗試用esp定律
程式入口為
00431001 > 60 pushad00431002 e8 03000000 call crackme2.0043100a
00431007 - e9 eb045d45 jmp 45a014f7
0043100c 55 push ebp
0043100d c3 retn
0043100e e8 01000000 call crackme2.00431014
f8一次,下硬體訪問斷點,f9執行後取消斷點。來到這
004313b0 /75 08 jnz short crackme2.004313ba004313b2 |b8 01000000 mov eax,1
004313b7 |c2 0c00 retn 0c
004313ba \68 01f04200 push crackme2.0042f001
004313bf c3 retn
004313c0 8b85 26040000 mov eax,dword ptr ss:[ebp+426]
004313c6 8d8d 3b040000 lea ecx,dword ptr ss:[ebp+43b]
f8單步走三次就到達程式oep
00403861 55 push ebp00403862 8bec mov ebp,esp
00403864 6a ff push -1
00403866 68 f0624000 push crackme1.004062f0
0040386b 68 d44c4000 push crackme1.00404cd4
00403870 64:a1 00000000 mov eax,dword ptr fs:[0]
00403876 50 push eax
00403877 64:8925 0000000>mov dword ptr fs:[0],esp
0040387e 83ec 58 sub esp,58
00403881 53 push ebx
00403882 56 push esi
00403883 57 push edi
00403884 8965 e8 mov dword ptr ss:[ebp-18],esp
00403887 ff15 48604000 call dword ptr ds:[406048] ; kernel32.getversion
整個流程就是——
1、單步f8
2、記錄esp的位址
3、在esp的位址處,下硬體訪問斷點
4、接著執行
5、刪除硬體斷點
6、單步走3次
7、就來到oep了!
所以指令碼就可以寫了。
指令碼一般都是儲存為osc格式,也可以儲存為txt格式
var addr//定義乙個變數addr
sto //單步,也就是f8
mov addr,esp //把此處esp的位址給變數addr
bphws addr,"r"//下硬體讀取斷點,也就是硬體訪問斷點
run//執行,也就是f9
bphwc addr //取消斷點
sto //單步,也就是f8,第1次
sto //單步,也就是f8,第2次
sto //單步,也就是f8,第3次
cmt eip,"this is the oep! found by joychou"//在eip處,也就是現在od停留了位置加注釋
msg "dump and fix it"//彈出乙個對話方塊
ret//結束指令碼
快吃午飯了,寫著玩玩,下午還去圖書館!
下面接著乙個pe pack的殼
整個流程是——
1、單步f8三次
2、記錄esp的位址
3、在esp的位址處,下硬體訪問斷點
4、接著執行
5、刪除硬體斷點
6、f8一次就到oep
所以指令碼為
1var addr//
定義乙個變數
2 sto//
單步走3
sto4
sto5
mov addr,esp
6 bphws addr,"r"
//在esp處下硬體訪問斷點
7run
8 bphwc addr//
刪除斷點
9sto
10 cmt eip, "
this is the oep ,found by joychou"//
在eip加注釋
11 msg "
now, dump and fix it"12
13 ret
Day 0 IDEA簡單學習
手動導包 快捷鍵 alt enter 自動導包和優化多餘的包 8.修改類頭的文件注釋資訊 注意 對新建的類才有效 建立內容 alt insert main方法 psvm 輸出語句 sout 複製行 ctrl d 刪除行 ctrl y 向上 下移動 ctrl shift up down 搜尋類 ctr...
Hack World簡單指令碼學習
import requests import time import re url flag for i in range 1,43 flag的字元數為43位 max 127 所有字元總數為127 min 0 for c in range 0,127 s int max min 2 二分法找出正確字...
Shell 指令碼學習 簡單的執行跟蹤
程式是人寫的,難免會出錯。想知道你的程式正在做什麼,有個好方法,就是把執行跟蹤的功能開啟。這會使得shell顯示每個被執行到的命令,並在前面加上 乙個加號後面跟著乙個空格。在指令碼裡,用 set x 命令將執行跟蹤的功能開啟,然後再用 set x 命令關閉它。這個功能對複雜的指令碼比較有用,不過這裡...