无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

go語(yǔ)言逆向技術(shù)之---恢復(fù)函數(shù)名稱算法

2022-10-13 13:23 作者:不吃晚飯la  | 我要投稿

go語(yǔ)言是最近幾年發(fā)展非常火的一種語(yǔ)言,它具備和C/C++一樣的運(yùn)行速度快的優(yōu)點(diǎn),同時(shí)又具備開(kāi)發(fā)效率高,支持包管理機(jī)制高階語(yǔ)言特點(diǎn)。其編譯出來(lái)的二進(jìn)制文件格式和C/C++一樣運(yùn)行在Linux平臺(tái)下是elf格式,運(yùn)行在windows平臺(tái)下是pe格式,但同時(shí)在二進(jìn)制文件的內(nèi)部細(xì)節(jié)上go語(yǔ)言有自己特有的屬性,二進(jìn)制逆向人員可以利用go語(yǔ)言這些特有屬性來(lái)來(lái)實(shí)現(xiàn)對(duì)二進(jìn)制文件進(jìn)行更精準(zhǔn)的逆向分析。

特性1:利用go語(yǔ)言中特有的節(jié)信息來(lái)判斷elf/pe文件的源代碼語(yǔ)言類型,是go語(yǔ)言還是C、c++語(yǔ)言。

通過(guò)判斷二進(jìn)制文件中是否存在“.noptrdata”、“.gopclntab”、“.data.rel.ro.gopclntab”確定源代碼,如果存在上述節(jié)名稱,則源代碼為go語(yǔ)言;

?



特性2:在沒(méi)有符號(hào)表的情況下如何恢復(fù)函數(shù)名稱。

我們知道在C/C++編譯出來(lái)的二進(jìn)制文件中,如果沒(méi)有符號(hào)表信息是沒(méi)法看到函數(shù)名稱的,在IDA工具中只能看到地址信息。

?



go語(yǔ)言怎么來(lái)恢復(fù)函數(shù)名稱呢,可以通過(guò)從.data.rel.ro節(jié)來(lái)恢復(fù)函數(shù)名,具體查找定位算法如下:

?



方法1:
解析解頭信息可以獲取magic, quantum, ptr_size, func_tab_count數(shù)據(jù),當(dāng)magic為’\xfb\xff\xff\xff’時(shí),entry_size = 2 * ptr_size為entry結(jié)構(gòu)體大小,func_tab_count 為entry結(jié)構(gòu)體數(shù)量;解析entry結(jié)構(gòu)獲取到名稱信息結(jié)構(gòu)數(shù)據(jù)位置偏移(需要注意64位和32位go程序 func_info_offset位置相反),讀取名稱信息結(jié)構(gòu)體數(shù)據(jù),再?gòu)闹蝎@取到名稱字符串位置偏移(name_offset),根據(jù)此偏移定位到函數(shù)名稱字符串起始位置偏移,從該位置解析得到函數(shù)名稱。

方法2:
另外1.16版本go語(yǔ)言結(jié)構(gòu)有些新變化,magic變?yōu)椤痋xfa\xff\xff\xff’,解析頭信息獲取func_tab_cnt, file_cnt, func_name_off, cu_off, filetab_off, pctab_off, func_tab_off數(shù)據(jù),其中func_tab_off為entry數(shù)據(jù)起始位置,解析entry結(jié)構(gòu)獲取code_off, func_info_offset數(shù)據(jù),后續(xù)解析過(guò)程與magic=’\xfb\xff\xff\xff’一致。

總結(jié):
通過(guò)上述方法可以恢復(fù)函數(shù)真實(shí)名稱,從而方便對(duì)go語(yǔ)言二進(jìn)制文件的逆向分析,提升分析效率。

?


go語(yǔ)言逆向技術(shù)之---恢復(fù)函數(shù)名稱算法的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
河曲县| 台前县| 桐梓县| 鲁甸县| 涟水县| 杭州市| 上虞市| 土默特左旗| 伊宁县| 绥德县| 建昌县| 新民市| 读书| 甘洛县| 永靖县| 东阿县| 浦江县| 阳泉市| 昂仁县| 莎车县| 苍梧县| 张家港市| 富锦市| 白河县| 丰原市| 万源市| 新龙县| 筠连县| 儋州市| 扎兰屯市| 八宿县| 兴业县| 吉林省| 札达县| 竹北市| 旌德县| 乡城县| 凤凰县| 墨江| 花垣县| 龙门县|