日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國(guó)內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁(yè) > php開源 > 綜合技術(shù) > 調(diào)試原理-逆向peid-判定vc

調(diào)試原理-逆向peid-判定vc

來(lái)源:程序員人生   發(fā)布時(shí)間:2015-04-13 08:26:33 閱讀次數(shù):3650次

之前1直認(rèn)為1個(gè)工具只要會(huì)用就能夠了,可是作為1名喜歡安全的渣渣來(lái)說(shuō),會(huì)用還遠(yuǎn)遠(yuǎn)不夠,你還得了解它,欺騙它,改造它,提升它!
上1篇文章講了如何脫掉peid0.94版本的殼
[調(diào)試原理]逆向peid_脫殼
這1篇文章對(duì)peid開始逆向分析它的原理。開始的時(shí)候,從最簡(jiǎn)單的分析起:如何判斷程序有vc編譯器編譯的。

逆向工具:ollydbg,ida,winhex
分析對(duì)象:peid v0.94(完善脫殼后uppeid)
測(cè)試程序:TraceMe.exe


打開peid加載TraceMe.exe發(fā)現(xiàn)為Microsoft Visual C++ 6.0編寫,所以直接打開ollydbg,查找字符串Microsoft Visual C,發(fā)現(xiàn)字符串
這里寫圖片描述
雙機(jī)來(lái)到這個(gè)字符所在的地方
這里寫圖片描述
發(fā)現(xiàn)跳轉(zhuǎn)來(lái)自的地方,往上尋覓,發(fā)現(xiàn)這個(gè)函數(shù)的起始部份
這里用IDA1樣可以到達(dá)相同的效果
直接下斷,然后用peid加載我們的測(cè)試程序TraceMe.exe,后F9,程序中斷下來(lái)
單步運(yùn)行,將分析的算法寫在下面的代碼中:

00438C26 |. 53 push ebx 00438C27 |. 55 push ebp 00438C28 |. 56 push esi 00438C29 |. 57 push edi ; 下面就是填充1個(gè)數(shù)組 00438C2A |. B0 72 mov al,0x72 ; "r" 00438C2C |. 884424 2F mov byte ptr ss:[esp+0x2F],al 00438C30 |. 884424 31 mov byte ptr ss:[esp+0x31],al 00438C34 |. 884424 34 mov byte ptr ss:[esp+0x34],al 00438C38 |. 884424 39 mov byte ptr ss:[esp+0x39],al 00438C3C |. 884424 3D mov byte ptr ss:[esp+0x3D],al 00438C40 |. B0 63 mov al,0x63 00438C42 |. 884424 40 mov byte ptr ss:[esp+0x40],al ; "c" 00438C46 |. 884424 41 mov byte ptr ss:[esp+0x41],al 00438C4A |. B0 73 mov al,0x73 00438C4C |. 884424 43 mov byte ptr ss:[esp+0x43],al ; "s" 00438C50 |. 884424 44 mov byte ptr ss:[esp+0x44],al 00438C54 |. B0 6C mov al,0x6C 00438C56 |. 884424 47 mov byte ptr ss:[esp+0x47],al ; "l" 00438C5A |. 884424 48 mov byte ptr ss:[esp+0x48],al 00438C5E |. 8BB424 A00400>mov esi,dword ptr ss:[esp+0x4A0] 00438C65 |. 8B46 0C mov eax,dword ptr ds:[esi+0xC] ; "PE" 00438C68 |. 8B56 18 mov edx,dword ptr ds:[esi+0x18] ; .text 00438C6B |. B1 6D mov cl,0x6D 00438C6D |. 884C24 36 mov byte ptr ss:[esp+0x36],cl ; "m" 00438C71 |. 884C24 3E mov byte ptr ss:[esp+0x3E],cl 00438C75 |. B3 41 mov bl,0x41 ; 'A' 00438C77 |. C64424 2C 7B mov byte ptr ss:[esp+0x2C],0x7B ; "g" 00438C7C |. C64424 2D 4F mov byte ptr ss:[esp+0x2D],0x4F 00438C81 |. C64424 2E 75 mov byte ptr ss:[esp+0x2E],0x75 00438C86 |. C64424 30 50 mov byte ptr ss:[esp+0x30],0x50 00438C8B |. C64424 32 6F mov byte ptr ss:[esp+0x32],0x6F 00438C90 |. C64424 33 67 mov byte ptr ss:[esp+0x33],0x67 00438C95 |. C64424 35 61 mov byte ptr ss:[esp+0x35],0x61 00438C9A |. C64424 37 44 mov byte ptr ss:[esp+0x37],0x44 00438C9F |. C64424 38 69 mov byte ptr ss:[esp+0x38],0x69 00438CA4 |. C64424 3A 7D mov byte ptr ss:[esp+0x3A],0x7D 00438CA9 |. C64424 3B 5C mov byte ptr ss:[esp+0x3B],0x5C 00438CAE |. 885C24 3C mov byte ptr ss:[esp+0x3C],bl 00438CB2 |. 885C24 3F mov byte ptr ss:[esp+0x3F],bl 00438CB6 |. C64424 42 65 mov byte ptr ss:[esp+0x42],0x65 00438CBB |. C64424 45 2E mov byte ptr ss:[esp+0x45],0x2E 00438CC0 |. C64424 46 64 mov byte ptr ss:[esp+0x46],0x64 00438CC5 |. C64424 18 4D mov byte ptr ss:[esp+0x18],0x4D 00438CCA |. C64424 19 53 mov byte ptr ss:[esp+0x19],0x53 00438CCF |. C64424 1A 43 mov byte ptr ss:[esp+0x1A],0x43 00438CD4 |. C64424 1B 46 mov byte ptr ss:[esp+0x1B],0x46 00438CD9 |. 0FB740 06 movzx eax,word ptr ds:[eax+0x6] ; PE后偏移6位置為塊的數(shù)目 00438CDD |. 8D0C80 lea ecx,dword ptr ds:[eax+eax*4] ; 塊數(shù)目*5=0x14 00438CE0 |. 8B6CCA E8 mov ebp,dword ptr ds:[edx+ecx*8-0x18] ; .text段地址+塊數(shù)*40-0x18 = 1000(最后1個(gè)段大小) 00438CE4 |. 8D44CA D8 lea eax,dword ptr ds:[edx+ecx*8-0x28] ; 最后1個(gè)段地址(".rsrc"段地址) 00438CE8 |. 8B78 14 mov edi,dword ptr ds:[eax+0x14] ; 獲得最后1個(gè)段(.rsrc)的偏移 00438CEB |. 8B46 04 mov eax,dword ptr ds:[esi+0x4] ; 最后1個(gè)節(jié)末尾偏移 00438CEE |. 03FD add edi,ebp 00438CF0 |. 8BAC24 9C0400>mov ebp,dword ptr ss:[esp+0x49C] ; 數(shù)組中某值 00438CF7 |. 8D8F 00390000 lea ecx,dword ptr ds:[edi+0x3900] 00438CFD |. 3BC1 cmp eax,ecx 00438CFF |. 73 1A jnb XupPEiD.00438D1B 00438D01 |. 8B55 20 mov edx,[arg.7] ; 取得程序rva 00438D04 |. 85D2 test edx,edx ; 判斷是不是為0 00438D06 |. 74 13 je XupPEiD.00438D1B 00438D08 |. 8B4E 18 mov ecx,dword ptr ds:[esi+0x18] ; text段 00438D0B |. 8B79 14 mov edi,dword ptr ds:[ecx+0x14] ; text段在文件中的偏移 00438D0E |. 0379 10 add edi,dword ptr ds:[ecx+0x10] ; 偏移+text段在文件中的塊大小=text末尾偏移 00438D11 |. 3BD7 cmp edx,edi 00438D13 |. 0F82 E4020000 jb upPEiD.00438FFD ; 跳(確保oep在text段中)(vc的1個(gè)特點(diǎn))

在上面的代碼中00438D01處我的注釋是取得程序 RVA

00438D01 |. 8B55 20 mov edx,[arg.7] ; 取得程序rva

這個(gè)地方其實(shí)不是直接分析得到的,發(fā)現(xiàn)程序每次加載的時(shí)候arg.7的地址為00471018
這里寫圖片描述
右鍵數(shù)據(jù)窗口中跟隨,記錄地址,然后重新加載程序,在00471018地方下 內(nèi)存訪問(wèn)斷點(diǎn),F(xiàn)9運(yùn)行后加載TraceMe.exe,在下面的地方斷下:
這里寫圖片描述
而直接在數(shù)據(jù)窗口中跟隨,并沒有發(fā)現(xiàn)任何頭緒,往上回溯代碼,發(fā)現(xiàn)最開始賦給eax的地方在這里:
這里寫圖片描述
數(shù)據(jù)窗口中跟隨:

這里寫圖片描述
熟習(xí)pe結(jié)構(gòu)的看A0130000那個(gè)地方是否是在IMAGE_NT_HEADERS部份中IMAGE_OPTIONAL_HEADER中偏移為16的位置,而這個(gè)位置對(duì)應(yīng)的就是address of entrypoint,所以這個(gè)地方就應(yīng)當(dāng)是程序的RVA(OEP)

那末這個(gè)分析只是分析了部份判定vc的代碼,那末在之前還會(huì)不會(huì)又判定呢?我們看看那在判定vc的時(shí)候的堆棧
這里寫圖片描述
右鍵跟隨,發(fā)現(xiàn)回到剛剛賦給rva的代碼空間,前面的代碼段其實(shí)就是在將程序的偏移,基址送給這個(gè)函數(shù),然后判斷,下面的代碼段主要就是將函數(shù)指針數(shù)組的下標(biāo)存進(jìn)1個(gè)數(shù)組,然后調(diào)用相干函數(shù)確認(rèn)程序類型。

昨晚分析1般加載TraceMe的時(shí)候電腦卡死了,瞬間很是生氣,就沒有在進(jìn)行分析了,有興趣的大牛們可以進(jìn)行分析指針數(shù)組那個(gè)地方

分析了1點(diǎn),其他分析的思路也差不多和這個(gè)1樣,大牛勿噴!

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 国产精品久久亚洲7777 | 99re这里只有精品在线视频 | 中文字幕+乱码+中文乱码图片 | 黄色的视频在线观看 | 日批av| 日韩久久久久久 | 欧美日韩国产传媒 | 国产免费一区 | 91精品久久久久 | 国产精品午夜一区二区欲梦 | 亚洲第一视频 | 91福利网站 | av免费播放| 久久国产精品-国产精品 | 久久成人一区二区 | 日韩精品区 | 成人av网站在线观看 | 日本在线观看视频 | 亚洲成人国产 | sese综合 | 国产色网| 精品自拍视频在线观看 | 天天天天干 | 91精品国产99久久 | 亚洲图片久久 | 性一交一乱一乱一视频96 | 一区在线观看 | 午夜精品久久久久久久99无限制 | 亚洲成人久久久 | 美日韩一区二区三区 | 中文字幕 亚洲视频 | 国产乱码精品一区二区三区不卡 | 成年免费在线视频 | 叼嘿视频91 | 性色av一区二区 | 国产成人精品一区二区 | 国产一区二区播放 | 日韩免费一区二区三区 | 国产全黄a一级毛片91 | 在线久草 | 亚洲成人av在线播放 |