亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Linux?VIM編輯二進(jìn)制文件方式

 更新時(shí)間:2023年08月26日 09:00:00   作者:sunny_98_98  
這篇文章主要介紹了Linux?VIM編輯二進(jìn)制文件方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Linux VIM編輯二進(jìn)制文件

在vim下面編輯二進(jìn)制的方式如下:

vim -b binary_file

-b 這個(gè)參數(shù)設(shè)定了 ‘binary’ 選項(xiàng)。

然后輸入:

:%!xxd

這個(gè)命令把文件內(nèi)容以常見(jiàn)的字節(jié)偏移 十六進(jìn)制 ASCII碼的版面顯示

然后輸入R進(jìn)入改寫(xiě)模式,即可按照版面格式進(jìn)行編輯。

注意:只有十六進(jìn)制部分的修改才會(huì)被采用。右邊ASCII文本部分的修改無(wú)效。

編輯完成以后,輸入:

:%!xxd -r

這個(gè)命令把剛才的編輯格式轉(zhuǎn)換會(huì)原始文本格式。

再輸入:wq保存退出即可完成對(duì)二進(jìn)制文件的修改。

vim編輯修改二進(jìn)制文件以及對(duì)于二進(jìn)制文件中幻數(shù)測(cè)試

講述我在學(xué)習(xí)反匯編時(shí)遇到的關(guān)于編輯二進(jìn)制文件的問(wèn)題。

編輯環(huán)境:Ubuntu + vim

我測(cè)試的文件是一個(gè)可執(zhí)行文件,也就是通過(guò)c程序編譯之后生成的,這里附上我測(cè)試的時(shí)候使用的程序代碼:

//assert.c
//代碼出自《C primer plus》
#include <stdio.h>
#include <assert.h>
#include <math.h>
int main(){
	double x, y, z;
	puts("Enter a pair of numbers (0 0 to quit):");
	while(scanf("%lf%lf", &x, &y) == 2 && (x != 0 || y != 0)){
		z = x * x - y * y;
		assert(z >= 0);
		printf("answer is %f\n", sqrt(z));
		puts("Next pair of numbers: ");
	}
	puts("Done");
	return 0;
}

使用如下命令進(jìn)行編譯,這里的“-lm”是因?yàn)樾枰溄訑?shù)學(xué)庫(kù),否則會(huì)報(bào)錯(cuò)undefine:

gcc assert.c -o a -lm
gcc assert.c -o assert -lm

分別執(zhí)行上述兩條命令后可以產(chǎn)生a和assert兩個(gè)文件(這里為什么要生成兩個(gè)一樣的文件在后文有解釋)這里我們使用file命令查看一下文件的類(lèi)型,為FLE類(lèi)型:

file assert

隨后,使用vim打開(kāi)assert文件,這里的-b表示打開(kāi)的是二進(jìn)制文件:

vim -b assert.c

在vim中開(kāi)啟命令模式,通過(guò)如下命令,可以以十六進(jìn)制形式顯示:

%!xxd

測(cè)試:將ELF幻數(shù)替換為MS-DOS的可執(zhí)行文件幻數(shù),即4d5a

這里我演示一下我曾經(jīng)犯過(guò)的錯(cuò)誤,在修改結(jié)束后我直接wq關(guān)閉文件,這時(shí)候我使用file命令查看文件的類(lèi)型,得到了如下的內(nèi)容:

也就是 assert:ASCII text,并不是我想要的MS-DOS內(nèi)容,為了測(cè)試這種編輯操作是否會(huì)對(duì)原本的文件產(chǎn)生影響,我們?cè)偈褂蒙鲜龇绞綄ssert文件的前兩個(gè)字節(jié)改回到7f45,wq保存。

這時(shí)用到a文件,將a文件和改回原內(nèi)容的assert文件進(jìn)行比較:

cmp a assert

使用上述命令之后可以看到兩個(gè)文件并不一樣,也就說(shuō)明直接更改是不行的

這時(shí)可能意識(shí)到命令使用錯(cuò)誤,經(jīng)過(guò)一番查找,在使用%!xxd命令進(jìn)行更改二進(jìn)制文件后,需要使用%!xxd -r命令進(jìn)行還原(在vim命令模式下輸入),否則會(huì)造成錯(cuò)誤:

%!xxd -r

再次使用上述更改步驟,可以得到正確的結(jié)果,可以看到assert文件被更改為MS-DOS文件:

總結(jié):上述的內(nèi)容是我個(gè)人在遇到問(wèn)題時(shí)候的解決過(guò)程,供大家避雷,總結(jié)下來(lái)也就是幾條命令的事:

vim -b xxx(文件名)
%!xxd 
%!xxd -r

這里附加幾個(gè)幻數(shù),供大家測(cè)試:

complied Java class: cafe babe
MS-DOS executable: 4d5a

JPEG: 這里面需要改固定的幾個(gè)位置,第1,2字節(jié)改為ffd8,7,8,9,10字節(jié)改為4a,46,49,46,其他字節(jié)不需要修改,任何都可以。

最后

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Linux遠(yuǎn)程登錄實(shí)現(xiàn)教程解析

    Linux遠(yuǎn)程登錄實(shí)現(xiàn)教程解析

    這篇文章主要介紹了Linux遠(yuǎn)程登錄實(shí)現(xiàn)教程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • linux設(shè)置tomcat自啟動(dòng)的方法

    linux設(shè)置tomcat自啟動(dòng)的方法

    這篇文章主要介紹了linux設(shè)置tomcat自啟動(dòng)的方法,需要的朋友可以參考下
    2014-03-03
  • 配置Linux服務(wù)器SSH 安全訪(fǎng)問(wèn)的四個(gè)小技巧

    配置Linux服務(wù)器SSH 安全訪(fǎng)問(wèn)的四個(gè)小技巧

    越來(lái)越多的站長(zhǎng),開(kāi)始使用獨(dú)立主機(jī)(Dedicated Host)和 VPS。而為了節(jié)省成本或提高性能,不少人的獨(dú)機(jī)和 VPS,都是基于 unmanaged 的裸機(jī),一切都要自己 DIY。這時(shí)候,安全策略的實(shí)施,就猶為重要。
    2010-12-12
  • Linux chage命令詳解

    Linux chage命令詳解

    chage命令用于密碼實(shí)效管理,該是用來(lái)修改帳號(hào)和密碼的有效期限,接下來(lái)通過(guò)本文給大家介紹Linux chage命令相關(guān)知識(shí),本文介紹的非常詳細(xì),具有參考借鑒價(jià)值,感興趣的朋友一起學(xué)習(xí)吧
    2016-01-01
  • Ubuntu cron日志開(kāi)啟與查看的實(shí)現(xiàn)步驟

    Ubuntu cron日志開(kāi)啟與查看的實(shí)現(xiàn)步驟

    這篇文章主要介紹了Ubuntu cron日志開(kāi)啟與查看的實(shí)現(xiàn)步驟的相關(guān)資料,希望通過(guò)本文能幫助到大家,讓大家實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下
    2017-10-10
  • PHP程序員玩轉(zhuǎn)Linux系列 使用supervisor實(shí)現(xiàn)守護(hù)進(jìn)程

    PHP程序員玩轉(zhuǎn)Linux系列 使用supervisor實(shí)現(xiàn)守護(hù)進(jìn)程

    這篇文章主要為大家詳細(xì)介紹了PHP程序員玩轉(zhuǎn)Linux系列文章,使用supervisor實(shí)現(xiàn)守護(hù)進(jìn)程,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • Ubuntu 18.04上安裝 phpMyAdmin的詳細(xì)教程

    Ubuntu 18.04上安裝 phpMyAdmin的詳細(xì)教程

    這篇文章主要介紹了Ubuntu 18.04上安裝 phpMyAdmin的詳細(xì)教程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-12-12
  • Linux多臺(tái)服務(wù)器之間免密登錄的實(shí)現(xiàn)步驟

    Linux多臺(tái)服務(wù)器之間免密登錄的實(shí)現(xiàn)步驟

    在日常的后端開(kāi)發(fā)和運(yùn)維工作中,我們經(jīng)常需要頻繁登錄不同的服務(wù)器進(jìn)行部署、排查問(wèn)題或上傳文件,傳統(tǒng)的基于用戶(hù)名和密碼的登錄方式既不安全又不高效,為此,我們可以利用 SSH 公鑰認(rèn)證的方式,實(shí)現(xiàn)無(wú)密碼(免密)登錄遠(yuǎn)程服務(wù)器,下面小編給大家詳細(xì)說(shuō)說(shuō)
    2025-04-04
  • iis、apache與nginx禁止目錄執(zhí)行asp、php腳本的實(shí)現(xiàn)方法

    iis、apache與nginx禁止目錄執(zhí)行asp、php腳本的實(shí)現(xiàn)方法

    為了網(wǎng)站安全,很多圖片上傳目錄等不需要執(zhí)行腳本的目錄我們可以通過(guò)下面的方法禁止執(zhí)行腳本。
    2011-11-11
  • Ubuntu系統(tǒng)下擴(kuò)展LVM根目錄的方法

    Ubuntu系統(tǒng)下擴(kuò)展LVM根目錄的方法

    這篇文章主要給大家介紹了關(guān)于Ubuntu系統(tǒng)下擴(kuò)展LVM根目錄的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-05-05

最新評(píng)論