日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java中asl_带你认识绕不开的ASLR

發(fā)布時(shí)間:2024/9/27 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java中asl_带你认识绕不开的ASLR 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

微軟從windows vista/windows server 2008(kernel version 6.0)開始采用ASLR技術(shù),主要目的是為了防止緩沖區(qū)溢出ASLR技術(shù)會(huì)使PE文件每次加載到內(nèi)存的起始地址隨機(jī)變化,并且進(jìn)程的棧和堆的起始地址也會(huì)隨機(jī)改變。

ASLR(Address space layout randomization)是一種針對(duì)緩沖區(qū)溢出的安全保護(hù)技術(shù),通過對(duì)堆、棧、共享庫映射等線性區(qū)布局的隨機(jī)化,通過增加攻擊者預(yù)測(cè)目的地址的難度,防止攻擊者直接定位攻擊代碼位置,達(dá)到阻止溢出攻擊的目的。據(jù)研究表明ASLR可以有效的降低緩沖區(qū)溢出攻擊的成功率,如今Linux、FreeBSD、MacOS、Windows等主流操作系統(tǒng)都已采用了該技術(shù)。

一、主要特點(diǎn)

1、映像隨機(jī)化

經(jīng)典的方法是用注冊(cè)表項(xiàng)HKLM\SYSTEM\CurrentControlSet\Session Manager\Memory Management的方法對(duì)映像隨機(jī)化禁用 ?設(shè)置為0 禁用 ,-1強(qiáng)制對(duì)可隨機(jī)化的映像進(jìn)行處理,其他值正常工作;

各模塊的低位2位不變;

只是對(duì)加載基址的前2個(gè)字節(jié)做了隨機(jī)處理;

2、堆棧隨機(jī)化

XP下不具備,VISTA具備,每次獲取堆地址不同;不需要精確跳轉(zhuǎn)的,溢出手段影響有限;

3、PEB TEB隨機(jī)化

XP SP2中已經(jīng)引入了,使用隨機(jī)性的基址。

提取代碼:

unsigned int teb;

unsigned int peb;

__asm

{

mov eax,fs:[0x18]

mov teb,eax

mov eax,dword ptr [eax+0x30

mov teb,eax]

}

printf("PEB:%#x\nTEB:%#x",peb,teb);

getchar();

4、VS2019中支持ASLR

該技術(shù)需要操作系統(tǒng)和編譯工具的雙重支持(主要是操作系統(tǒng)的支持,編譯工具主要作用是生成支持ASLR的PE格式);?若不想使用ASLR功能,可以在VS(2019)編譯的時(shí)候?qū)ⅰ芭渲脤傩?>鏈接器->高級(jí)->隨機(jī)基址”的值修改為否即可。

5、工具鑒別

這里我們用一個(gè)工具ASLRProcessScanner來查看下ASLR是否打開,

發(fā)現(xiàn)這個(gè)程序是打開了ASLR。

這個(gè)程序有如下的用法,

可以批量指出當(dāng)前運(yùn)行的進(jìn)程有哪些具備ASLR,也可以對(duì)指定進(jìn)程、程序進(jìn)行檢測(cè)。

二、比對(duì)PE信息

準(zhǔn)備兩個(gè)PE程序,一個(gè)有ASLR,一個(gè)沒有?ASLR,用PEView查看,

ASLR.exe比NoASLR.exe多了一個(gè).reloc節(jié)區(qū),這個(gè)節(jié)區(qū)存儲(chǔ)了程序中的硬編碼信息。

IMAGE_FILE_HEADER\Characteristics

發(fā)現(xiàn)ASLR.exe比NoASLR.exe少了一個(gè)“IMAGE_FILE_RELOCS_STRRIPED(0001)”標(biāo)志,該標(biāo)志的含義是:

Relocation information was strippedfrom the file. The file must be loaded at its preferred base address. If the base address is not available, the loader reports an error.

換個(gè)工具看下,

ASLR.exe位置的數(shù)值為 0,而NoASLR.exe位置的數(shù)值為 1;也就意味著這里我只要置為 1 就可關(guān)閉ASLR;

三、關(guān)閉ASLR,便于調(diào)試

ASLR技術(shù)會(huì)使PE文件每次加載到內(nèi)存的起始地址隨機(jī)變化,并且進(jìn)程的棧和堆的起始地址也會(huì)隨機(jī)改變。

該技術(shù)需要操作系統(tǒng)和編譯工具的雙重支持(主要是操作系統(tǒng)的支持,編譯工具主要作用是生成支持ASLR的PE格式)。

1、關(guān)閉操作系統(tǒng)的ASLR

操作系統(tǒng)方面關(guān)閉ASLR支持,不知道在哪里關(guān)閉怎么辦呢?沒關(guān)系,我們可以看看別人是怎么做的。

可以看到注冊(cè)表添加了一個(gè)DWORDRD鍵值項(xiàng)HKLM\System\CurrentControlSet\Control\SESSION MANAGER\MEMORY MANAGEMENT\MoveImages,其值為0。

2、關(guān)閉PE頭中ASLR

那么這個(gè)時(shí)候我們可以通過修改PE頭中可選頭的Characteristics來達(dá)成我們的目的。

將這個(gè)0x0103改成0x0102就可以關(guān)閉PE中的ASLR了。

3、這樣每次加載的時(shí)候都是在同一個(gè)地址,調(diào)試起來的時(shí)候是固定地址了。用OD逆向的時(shí)候,和IDA中的地址對(duì)上了。

至此,簡(jiǎn)單介紹完畢。

這是我的第100篇文章,非常有紀(jì)念意義!

同時(shí),這篇文章居然是在“魔都”完成的,沒想到的緣份;今天也是這個(gè)公眾號(hào)開辦整整9個(gè)月,一切都值得紀(jì)念。

總結(jié)

以上是生活随笔為你收集整理的java中asl_带你认识绕不开的ASLR的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。