久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標(biāo)題: 可改變自身的代碼 [打印本頁(yè)]

作者: liuyang    時(shí)間: 2012-3-25 01:29
標(biāo)題: 可改變自身的代碼
 
    世上的唯美,是那雙清澈的眼眸                            ——題記
    以前看《自己動(dòng)手寫操作系統(tǒng)》的時(shí)候,書中有段代碼改變了自身并且完成了正確的跳轉(zhuǎn),這個(gè)想法實(shí)在漂亮(記得是從實(shí)模式跳轉(zhuǎn)到保護(hù)模式,晚了不去查了)。 但當(dāng)時(shí)驚艷之后沒(méi)做深入考慮,這是個(gè)失誤。代碼可以改變自身,利用這點(diǎn)可以做一點(diǎn)簡(jiǎn)陋的保護(hù)機(jī)制(代碼加密,當(dāng)然也可以用于病毒程序)。但是估計(jì)保護(hù)效果 不會(huì)很好,下面分析一下卡巴斯基給出例子。
#include <windows.h>
#define CRYPT_LEN ((int)crypt_end - (int)for_crypt)
mark_begin()//用以標(biāo)記,待加密函數(shù)在文件中的起始位置
{
    __asm _emit 'K' __asm _emit 'P' __asm _emit 'N' __asm _emit 'C'
}
for_crypt(int a,int b)//待加密函數(shù)
{
    return a + b;
}crypt_end(){}
mark_end()//用以標(biāo)記,待加密函數(shù)在文件中的結(jié)束位置
{
    __asm _emit 'K' __asm _emit 'P' __asm _emit 'N' __asm _emit 'C'
}
crypt_it(unsigned char *p,int c)//解密過(guò)程
{
    int a;
    VirtualProtect(p,c,PAGE_READWRITE,(DWORD*)&a);
    for (a = 0;a < c; a++) *p++ ^=0x66;
    VirtualProtect(p,c,PAGE_READONLY,(DWORD*)&a);
}
main()
{
    crypt_it((unsigned char*)for_crypt,CRYPT_LEN);//調(diào)用解密函數(shù),解密被保護(hù)的代碼
    printf("%02Xh\n",for_crypt(0x69,0x66));//函數(shù)運(yùn)行結(jié)果
}
這個(gè)文件編譯連接完成后,肯定是沒(méi)法運(yùn)行的。
加密工作是在編譯完之后,用十六進(jìn)制編輯器修改兩個(gè)KPNC之間部分代碼(此處就是^=0x66的逆運(yùn)算,簡(jiǎn)單的XOR算法)。
當(dāng)然完成之后兩個(gè)KPNC標(biāo)志也要換成比較迷惑的數(shù)值,但這些都是徒勞的,沒(méi)法抵擋灰闊那雙清澈的眼眸。如果為了泄被破解之憤,大可以改成WOCA或者F.UCK等標(biāo)志。
for (a = 0;a < c; a++) *p++ ^=0x66;試圖修改.text段,這回異常的。所以連接obj文件時(shí)加上選項(xiàng)/section:.text ERW指定具有讀寫和執(zhí)行屬性。
    而Windows API VirtualProtect(p,c,PAGE_READWRITE,(DWORD*)&a);修改了被保護(hù)代碼的內(nèi)存頁(yè)面屬性,指定為可讀寫。
    這種保護(hù)對(duì)于靜態(tài)反匯編來(lái)說(shuō)很容易制造混亂。但是在調(diào)試面前卻不堪一擊,那個(gè)API可是很顯眼啊。另外代碼段中多出一堆亂七八糟的東西也是很扎眼的。解密算法也較容易分析出來(lái)(及時(shí)算法復(fù)雜也只是時(shí)間問(wèn)題)。不過(guò)跟反調(diào)試技術(shù)結(jié)合一下,應(yīng)該有點(diǎn)用處。
    只是玩味一下這個(gè)東西。
 
    另外:也可以在堆棧中分配空間,那是可寫的,再把.text段中的負(fù)責(zé)“修改自身”的函數(shù)通過(guò)memcpy放到堆中,調(diào)用堆中的修改函數(shù)來(lái)改變自身代碼。雖然沒(méi)有異常,但是可能存在代碼重定位問(wèn)題(畢竟代碼執(zhí)行的地址無(wú)法預(yù)知了)。





歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 中文字幕在线视频网站 | 欧美日韩在线播放 | 国产中文字幕亚洲 | 国产精品1区2区 | 亚洲成色777777在线观看影院 | av网站在线免费观看 | 久久99精品久久久久久国产越南 | 久久精品中文字幕 | 免费成人毛片 | 亚洲精品成人网 | 日韩精品免费视频 | 三级在线免费观看 | 人人亚洲 | 亚洲自拍偷拍av | av看看| 亚洲国产精品自拍 | 国产一区不卡 | 91精品一区二区三区久久久久久 | av网站免费| 国产精品成人在线播放 | 欧美精品在线免费观看 | 一区二区三区欧美 | 综合久久综合久久 | 艹逼网| 国产欧美在线 | 欧美日韩中文国产一区发布 | 欧美aaa级| 亚洲成人一区二区 | 99精品视频在线 | 日本成人二区 | 91精品久久久久久久久久 | 久久躁日日躁aaaaxxxx | 中国三级黄色录像 | 亚洲免费网址 | 丁香婷婷在线视频 | 亚洲欧美精品在线观看 | 风间由美一区二区三区在线观看 | 懂色tv | 午夜www| h片在线免费观看 | 青青久久av北条麻妃海外网 |