回覆列表
  • 1 # 找自己257908168

    直接執行很難,需要自己寫執行程式,因為Txt本來就是文字,文字的話他是有固定編碼格式的,就是說翻譯成2進位制,每個字都有固定的長度,也就是說文本里面的0.1他是3個字元,如果字元2位元組(一位元組8位)那她就有3*16位的長度表示,而程式碼裡面卻是一個32位的數字,記憶體對不同型別的表示長度和位數均不一樣,文字不會像程式碼一樣,不同型別的變數定義不同的長度,即使將程式碼或二進位制貼進去,那也只是字元,除非你瞭解Txt的啟動機制,能利用漏洞執行你裡面的程式碼(要先將程式碼編譯二進位制,再將二進位制轉成文字的編碼格式)就是說文本里不是0和1,而是轉化後的亂碼,主要還是瞭解啟動機制和尋找漏洞

  • 2 # 程式設計師小助手

    結論:拋開平臺說檔案,都是不負責任的。本文教你檔案的正確開啟方式。

    前言

    題主之所以造成這些疑惑,主要是對計算機作業系統處理檔案的機制不明所致。

    檔案型別

    描述“檔案都是以二進位制儲存”,是不準確的。

    分兩個平臺說。

    1 - windows

    Windows系統檔案按照不同的格式和用途分很多種類,為便於管理和識別,在對檔案命名時,是以副檔名加以區分的,即檔名格式為: filename.ext。

    這樣就可以根據檔案的副檔名,判定檔案的種類,從而知道其格式和用途。

    這些檔案都有其儲存格式,在磁碟上使用二進位制/十六進位制儲存,

    但是,如何讀這些檔案就成了問題,計算機認識,而人不認識。

    要看這些檔案,你用什麼方式讀取,什麼編碼方式讀取,這造成了誤差。

    2 - Linux

    哲學宗旨:“一切皆檔案”。

    所有的內容都是用檔案去對待。副檔名沒有什麼意義。只與檔案型別有關。

    Linux的檔案型別有下面這些。

    - : regular filed : directoryc : character device fileb : block device files : local socket filep : named pipel : symbolic link

    檔案型別使用 ls 指令檢視。

    可執行檔案

    現在要說到題主所說的“可以執行”。

    exe字尾的檔案是二進位制的可執行檔案,可執行檔案將包含其中包含資料的段。

    Windows使用PE格式。PE格式有一個包含機器指令的部分。這些指令只是按順序排序的數字,CPU可以理解它們。

    舉例,對於函式MessageBox()的呼叫將經歷一下過程:

    具有位於DLL中的函式的地址。此地址由編譯器輸入。

    將引數“推”到堆疊上的指令。

    實際的函式呼叫。

    某種清理(取決於呼叫約定)。

    需要牢記的是,EXE檔案只是特殊格式的檔案。你可以使用諸如Visual Studio等工具對其進行反彙編檢視。

    windows下,可直接執行的檔案,不只有 exe。比如 bat 批處理檔案,vbs 指令碼檔案,因為作業系統有 wscript 宿主環境,可直接執行。貼兩個檔案示例。

    上面這個是批處理bat檔案。

    上面這個是vbs檔案。

    同樣的,如果系統有java環境,你也可直接執行 jar 檔案。同理,python 環境可直接執行 py 檔案。

    結語

    就不展開說了吧,關於檔案系統的知識,遠非一兩句所能說清楚,其中涉及的編譯原理,作業系統,等等知識,需要題主自己去摸索。

  • 3 # 老居

    無法執行。

    在Windows系統中,可執行檔案需要遵循PE格式。

    一個完整的PE檔案需要包含很多內容,比如匯入表,匯出表,資源表,異常表,屬性證書表,基地址重定位表等等各種資訊。這些資訊定義了一個可執行檔案的logo圖示,用到的圖片音訊等等資源,以及這個可執行檔案是否需要載入外部動態連結庫(也就是很多人安裝完了軟體看到一大堆dll檔案感覺沒什麼用就刪掉了導致軟體啟動後就報找不到檔案的錯誤)。

    所以,對於電腦來說不是一個簡單的字尾改成exe就能運行了,這個字尾只是Windows下的一個約定。讓作業系統看到這個字尾就用可執行檔案來裝載和執行。如果一個TXT檔案改成exe ,系統按照可執行檔案去載入,會發現啥都沒有,就會拒絕執行。除非。你的TXT檔案嚴格按照PE格式去編輯。

    有些駭客倒是會把exe格式的木馬隱藏字尾名假裝成txt檔案傳播。

    附圖是我在2011年做的Windows的pe格式解析工具。已經開源並傳到在csdn共享,有興趣的可以交流。

    沒錯,工具上的小美女是2011年最紅的楊冪。。。。

  • 4 # 快樂剪影

    明白題主的意思,檔案是一堆二進位制資料,最細分下的內容是″00011100011001011100......″等等,題主是想把已經由各種塊組成的txt檔案完全打散,成各個資料完全獨立的狀態,這堆資料在不同硬體的取用下,資料重組,重分段,會不會正常輸出運算結果。

    例如,上面的資料,軟體1執行時,按0000,11,1000,11,0001,……取用資料。軟體2執行時,按00,0111,0001,1001,0111,......取用資料。同樣的資料會因為取用時資料位數不同而使不同的軟體執行起來。

    根據我的理解,檔案的資料不被破壞丟失的話,由檔案整體按順序譯出的二進位制資料串,前幾位會首先進入CPU處理,只要資料串頭部正常進入CPU的處理過程,後面的資料只要不丟失不出錯,資料如同線頭穿過針鼻,拉住頭部,後面的就能順利透過。如果出現數據丟失,發生變化,不能能晶片正常運算,晶片自帶的保護糾錯,就應該會提示報錯。

    如果改展了字尾名,例如txt改成exe,檔案的資料就發生了變化。檔案的資料就要被迫進入其他晶片硬體,晶片硬體嘗試將資料載入處理,發現載入以後不能正常反應,就會自糾報錯。如果就是那麼巧修改後的資料串恰好能適合另一個晶片硬體的工作,運算結果極有可能是亂碼或者誤動作。

    tⅹt是文字檔案,exe是可執行檔案。可執行檔案應該是嚴格對應晶片硬體管角輸入輸出編碼的。文字是按字形字型檔對應位置輸入輸出編碼的。這兩種輸入輸出的對應的位置是完全不一樣的,能夠執行的機率幾乎為乎,但是誰也不能確定會不會能執行。

  • 5 # 紫金大課堂

    這個理論有機率,但是機率如同大海里的一粒沙子一樣,你可以認為機率幾乎為0;

    一個可執行檔案exe,必須是有固定格式,特定的位元組或欄位有特定的含義,每個位元組或者欄位會被檢測,看是否exe合法,再回最終載入到系統內執行。

    在windows系統中,exe可執行檔案,必須滿足PE格式(Portable Executable),它是是Windows作業系統下使用的可執行檔案格式,不是任何txt改為exe後,就會符合PE格式的。

    這是一個PE格式的簡要框圖。

    當widonws載入exe的時候,它首先會檢查DOS header裡的PE header偏移,透過偏移找到PE頭。如果有一個TXT,那麼這個偏移就隨機,你想想,PE頭找到哪裡去了,鬼都不知道。

    即使這個欄位蒙上了,正好跳到了一個合法地址(機率很小很小啊)

    windows載入器會跳轉到PE header,然後後,接下來要做的就是檢查PE header是否有效。如果該PE header有效,就跳轉到PE header的尾部。

    PE頭包括以下幾個重要資訊

    1.Magic

    為IMAGE_OPTIONAL_HEADER32時,magic碼為10B,為IMAGE_OPTIONAL_HEADER64時,magic碼為20B

    其它無效,您能保證這個頭部,正好是10B或者20B麼,其它都無效,啟動失敗。

    2、AddressOfEntryPoint

    程式入口地址,

    該值指出程式最先執行的程式碼起始地址,相當重要。

    如果是txt改變過來的exe,這個地方的地址是多少,鬼知道啊,載入器會到哪裡載入程式,機率渺茫。

    3、ImageBase

    程式的基礎地址,一般windows程式,這個值是00400000,如果隨機的,這個值的範文就海了去了。

    執行PE檔案時,PE裝載器先建立程序,再將檔案載入記憶體,然後把EIP暫存器的值設定為ImageBase+AddressOfEntryPoint。這傢伙這些值隨機,範圍會隨機,合法性檢測很難透過

    4、SectionAlignment,FileAlignment

    硬碟和記憶體的對齊位置。

    就是按照什麼位元組對齊,這個也不許合法,如果隨機,執行載入會亂套,所以不合法也不會載入

    5、SizeOfImage

    程式大小,一般都有個上限,隨便填寫也不會載入成功

    6、SizeOfHeader

    PE頭大小

    SizeOfHeader用來指出整個PE頭大小。該值必須是FileAlignment的整數倍。必須和SizeOfHeader距檔案開始偏移的量相同。

    7、Subsystem

    驅動還是普通程式,其它不合法,載入失敗

    8、NumberOfRvaAndSizes

    NumberOfRvaAndSizes用來指定DataDirectory的陣列個數,載入器識別這個值

    簡單列了這些,其實PE頭裡的資訊和欄位遠遠不止這些,合法性檢測也比這多得多。

    所以,隨機使用一個txt硬改為exe,裡面的二進位制bit並不是符合PE格式的,檢測會不透過,載入器載入失敗,程式執行不起來的。

  • 6 # 執著的瘋子8

    可以執行。

    我告訴你為什麼。

    你先把exe改成txt。

    然後把txt複製給別人,

    再問他,txt改成exe能不能執行。

  • 7 # 碼農那點事

    如果你的問題按字面意思理解,當然是可以的。比如你把一個exe檔案先改成txt檔案。然後再改成exe檔案當然還是可以執行的。

    副檔名只是給作業系統看的,你可以隨便修改,但當你雙擊檔案開啟時,作業系統是根據副檔名來選擇能開啟的軟體的,而不是透過檔案內容,打個比方你把一個文字副檔名改成jpg,你雙擊它肯定預設是用看圖軟體開啟,但顯然軟體是識別不出這個檔案,因為它只是個文字檔案,非圖片檔案格式。那麼可執行檔案也是有一定格式的,不滿足的話無論你改成exe檔案,作業系統都無法識別執行的。

    所以我覺得你的問題應該是這樣的,如果用一個普通的文字編輯器編輯出來的txt檔案能否變成可執行檔案執行,這個幾乎就沒有可能了,因為文字編輯器一般都是輸入ascii碼字元或者unicode字元。把這些字元轉成二進位制幾乎是不可能達到可執行檔案格式要求的。但你如果用16進位制檔案編輯軟體來編寫txt檔案,理論上是可能寫出可執行的exe檔案的。

  • 8 # 半革

    先說結論:可以!

    原因:字尾對計算機來說啥也不代表,它只用來windows作業系統去對應用那種方式去顯示給人看。

    測試方法:你找一個可以執行的exe,用ue或者notepad++或者其他啥,或者自己程式設計開啟讀取16進位制檔案。看看裡面是啥?你照原樣抄到一個文件也好啥玩意也行,最後改成exe,照樣可以執行。

    原理:學過c語言的都應該可以理解,不用理解最底層的,就理解到指標就可以了。計算機儲存一個不管啥,都是在對應的地址放入對應的數值,並沒有什麼格式的概念,連代表格式本身的方式都是數值,只要你能原樣抄下來,都可以被計算機識別。

  • 9 # BWanger軟體開發達人

    這個問題非常有挑戰性。回答分兩部分。

    如果用cmd或Emeditor工具,做一個二進位制檔案,僅把副檔名換成EXE,那麼,可能性是存在的。如果這個TXT檔案是從記事本,寫字板,word,vs等編輯檔案製作的純文字檔案,把TXT改成exe,可執行的機率為0%。還有朋友提出:用貼上/複製的方法,可行嗎?答案是否定的,同樣是0%。因為最後的檔案都要儲存。

    總結原因:大部分IDE或文字編輯器不 支援二進位制儲存,如記事本,寫字板。所以,用這些工具根本是無法做的。

    以我做的APP程式1.exe(下圖)為例,分別說明如下:

    1,有兩種方法,可使二進位制TXT一>exe可執行檔案

    方法1:在windows的”開始””執行”輸入cmd回車,進入命令列。將1.exe copy成11.txt,再copy為exe檔案3.exe,看下圖的操作:

    到windows的資料夾中看一下,3.exe檔案與1.exe檔案一樣可以執行。

    方法2:使用emeditor進行二進位制編輯

    進入emeditor,選擇1.exe,開啟方式選擇”二進位制十六進位制檢視開啟”,會顯示exe檔案的16進位制顯示。以同樣的選擇儲存為11.txt檔案即可。

    注意:以上兩種方法都可以。只是副檔名為TXT,內容實際為二進位制檔案。用同樣方法將TXT更換為exe,app執行正確。

    2,為什麼用文字編輯器儲存為txt不行?

    先看一下1.exe檔案的11.txt的記事本開啟,或者用VC,VS開啟,再儲存時,只能存為txt,rtf,cpp等格式的文字檔案。它改成exe,可執行的機率為0%。記事本開啟如下圖,右鍵複製,顯然不行。。它改成exe,可執行的機率為0%

    下圖顯示的3.txt,4.txt,8.rtf分別為儲存後的文字檔案,我們會看到檔案大小已由1.exe的2096kKB變為2087KB或更小。這顯然是不對的,小了大到10KB。如下圖:

    那麼,用貼上/複製可行嗎?答案是否定的。因為最後的檔案都要儲存。但大部分IDE或文字編輯器不支援二進位制儲存。

    以上不行的原因:二進位制檔案以文字形式開啟/儲存,遇到其中的0dH,0aH等回車換行就被系統更改了。而以二進位制形式開啟/儲存,原檔案的每一個數據被完美保留。總結:僅以TXT為副檔名,檔案為二進位制形式儲存,TXT改成exe是可行的。用文字編輯器,儲存為文字檔案,可能性是0。

  • 10 # PreBuilder

    幾乎沒有可能性,除非特殊的內容。

    打個比方:電腦就像一所學校,檔案型別就像文學院,外國語學院,計算機學院,等等……,你本來是文學院的,有一天你撿了一個外國語學院的學生證就去上課了,結果別人教希伯來語,你聽都聽不懂,是不是一臉蒙圈?但是這也有偶然現象,你高中時迷戀聖經,研究過希伯來語(比如個別指令碼檔案),能聽懂一點,但是不能全明白。透過這個例子,你的明白?

    每一種檔案的入口地址不一樣,這也是便於各種檔案在系統裡被開啟時執行它的軟體能透過統一的偏移地址找到可執行程式碼的標記。

  • 11 # 代林野

    這個要看你的txt檔案是怎麼來的,如果你的txt是透過記事本等文字編輯類軟體來的,抱歉,肯定不可以,因為文字編輯類軟體會在儲存的時候為在檔案內容開始新增一個BOM頭(類似0xff 0xfe這樣的位元組),所以鐵定不可以。如果是txt是其他方式生成的,比如以二進位制編碼的方式寫入,只要寫入的二進位制流符合PE格式規範,最終的檔案就可以執行。

    其實你應該是想了解exe檔案是如何執行的吧?好奇為何雙擊一個exe檔案就會執行?如果是這樣的話,我可以簡單解釋一下,整個過程其實比較複雜,只能簡單說一下。

    當你雙擊一個exe檔案時,雙擊操作會被桌面程式(也就是explorer.exe)檢測到,然後explorer會啟動一個程序去執行雙擊的exe,新執行的exe程序,此時的過程我們可以認為是在使用者態;

    新程序的執行其實是轉入核心態,在核心態下,程序的執行其實是建立了一個程序核心物件,然後對該核心物件進行一系列的初始化,其中最關鍵的為初始化程序記憶體,初始化完成後,會將exe對應的二進位制內容(包括資料段、程式碼段等)按照PE格式進行解析並載入到記憶體中,最後指定程序執行的起始地址;

    這一系列初始化完成後,程序物件就可以被核心排程了(核心排程就是為程序分配不同的時間片去執行前面載入的程式碼段的二進位制機器碼),這樣,你所看到的exe就"執行"起來了。

  • 12 # 自家講譚

    可以的,曾經有網友教給我一個自動整理檔名的命令,就是用txt文字寫的。

    後來有一個生成目錄樹的,比較複雜我就不會寫了。

  • 13 # alex136442470

    檔案都是二進位制儲存的,就當是對的吧,之所以這麼勉強是因為最小操作單位是byte。

    按照上面的結論,Txt實際上也是二進位制儲存的。

    電腦本身不知道他是怎麼儲存的,因為他們都是二進位制儲存,你把他改成txt,電腦就認為是txt,所以就用文字工具去讀,你改成exe,電腦就當成可執行程式,去執行。

    但是呢,txt文件是按照一定的編碼去儲存的,如果計算機遇到錯誤的編碼,就會顯示為問號或者□。

    而exe對檔案的結構更是有更復雜的要求的,會儲存編譯器,本地連結庫,變數函式宣告,硬體介面等。

    當然你可以用指令碼,指令碼也是一種可執行程式,不過他是邊解釋邊執行的。對你來說,它既是文字,也可以執行

  • 14 # 程式碼Go說科技

    題主這個問題比較有代表性。我現在的身份是程式設計師,當初也曾經有過類似的想法。隨著學習的深入,對問題也有了更多的認識。題主提到的txt改成exe,應該是直接修改檔名的字尾名。這種情況下,還沒遇到過能執行的情況,大部分情況是不能執行的。

    能不能執行一個檔案,主要是與檔案格式有關。當然某些特定的檔案內容,又與檔案的格式關係不大。比如txt字尾檔案改為bat字尾,可以呼叫系統的dos命令直接執行。

    exe檔案大多是由特定的編譯器透過編譯、連結生成的具有執行資訊的特定格式檔案。更深層次講,它是由指令集組成。此外,普通的txt字尾是純文字檔案,尚未有透過更改檔案字尾轉變成指令集的操作,除了使用特定的工具。

    題主能問這個問題,說明對內心疑惑做了一番思考。伴隨著一個個疑惑解開,一定可以看到高手在前方向你招手。

  • 15 # 編碼之道

    一個很有意思的問題,因為在計算機內部的儲存介質中,不管任何檔案都是以二進位制的方式儲存的,副檔名只是為了指定開啟這個檔案的方式而已。比如txt檔案用記事本,pdf用閱讀器,exe系統以可執行程式開啟等。所以將一個txt檔案改為exe檔案,只是改變了該檔案的開啟方式,但是從理論上來說,這個txt檔案儲存的二進位制內容有可能剛好符合一個可執行的exe的要求,所以是存在可執行的可能的。至於這個機率有多大,我們可以做一個簡單的分析。

    上圖是一個典型的Exe檔案的二進位制內容(在這裡需要說明一下,exe是windows系統下的可執行檔案格式,也叫pe格式,而在Linux系統下是elf格式),下面讓我們看一下PE檔案的基本格式,如下圖:

    其中DOS頭為例,它是一個長度為40位元組的資料結構,而txt檔案的內容是隨機的,每個位元組剛好對應到正確DOS頭的機率為1/256,40個位元組全部對應上的機率是256的40次方之一,再加上後面的PE頭,以及程式碼內容,應用乘法原理,這種機率還要低很多很多,可能還不及中一次大樂透機率的萬億分之一。

    所以說,雖然將txt檔案改為exe檔案存在可以執行的可能,但是這種機率之小,已經超出大部分人的認知。如果以機率的認知來說,可以認為是不可能發生的!

  • 16 # 隨便記記

    告訴你一個機率達100%的做法。

    找一個可正常執行的可執行檔案,將其副檔名改為txt,接下來:

    將這個檔案的副檔名txt改為exe,這個txt副檔名改為exe後,保證100%的機率能執行。

  • 17 # 龍羿說數碼

    只能你先把exe改成txt,可以用記事本開啟看到一堆亂碼,然後再改成exe還是可以執行的。

    如果直接在txt裡手打,是幾乎不可能的,機率小到可以忽略那種。

    因為txt也是透過編碼進行儲存的,還不是底層的二進位制檔案。

  • 18 # 啊家又被偷了

    這個就要扯一下格式。

    當然,具體的格式是怎樣,需要查專門的文件,我不想那麼枯燥。

    就從原理方面來簡單的講一下。

    所以下面的格式都是我編的體系,進行各種簡單化處理:

    假設a國發明瞭計算機,它們國家的語言的基本字元ab、空格、換行四個字元。這個計算機的一個位元組只有4位(表示範圍是0-15)

    然後a國制定了標準碼錶說

    0-3分別對應a,b,空格,換行

    4-8是控制字元,並說了4是什麼控制什麼,5是控制什麼,……

    9-15我不規定,程式設計師自己去發揮吧

    然後對於檔案,計算機一個個位元組去讀取解析。

    對於文字檔案,採用aaa格式,計算機讀到啥就是啥……

    也就是正常的文字檔案,計算機讀一個位元組,只有0,1,2,3四種可能,分別解析成a,b,空格,換行

    然後規定圖片檔案只有一種格式,叫做bbb格式

    bbb格式的第一個位元組的內容必須是4,表示這是一個bbb格式的圖片檔案。然後後面三個位元組的內容我不規定,只是保留下來佔個坑,建議都存0(實際上大家都按照建議操作的)。再接下來四個位元組組成一個大的數,而且第5位元組是高位,第8個位元組是低位。例如0,0,0,5表示的是5,而5,0,0,0表示的是5*16*16*16=20480.而第5個位元組到第8個位元組解析出來的數表示的是圖片的寬度w;同理,接下來4個位元組(第9到第12位元組)表示的是圖片的高度h。然後接下來的w*h個位元組,每個位元組表示的是每個畫素的顏色值。順序是從左往右,從上往下。對的,bbb格式中,一個畫素的顏色只用了一個位元組表示(只有16種顏色)。因為a國人的視覺極其簡單,看到的顏色只有16種顏色。

    然後可執行檔案只有一種aba格式。它的格式是這樣的,第一個位元組必須是5,表示這是一個aba格式的可執行檔案。後面三個位元組是版本號,表示aba格式的版本,現在固定為0,0,1(暗示大家說不定以後我們會更新aba格式標準)。再後面四個位元組表示的是資料區的大小x(表示的規則和前面說的寬度一樣)。接下來x位元組是資料。再接下來的所有位元組都是指令。指令的規則又寫了一個指令集的文件。

    ——

    這樣,計算機讀檔案的時候,讀第一個位元組。如果發現第一個位元組是0-3,就認為是文字檔案,就按文字檔案的格式一個個解析顯示。

    如果第一個位元組是4,就知道是bbb格式的圖片檔案,按照圖片來解析顯示。

    每如果是第一個位元組是5,就知道是aba可執行檔案了,按照aba可執行檔案格式規則來解析執行。

    (當然,這個當然要靠程式設計師來實現,不然計算機知道個鬼

  • 19 # 蘇藝2018

    世界上的物質都是由質子、中子、電子組成。而有些物質是石頭,有些是麵包。檔案是由二進位制組成,二進位制的0、1相當於物質的質子中子電子,txt改名exe後可有意義執行,機率幾乎為0。

  • 20 # 李老師電腦教學課堂

    檔案都是以二進位制儲存,那麼一個txt改成exe,是否有機率可以執行?

    檔案都是以二進位制儲存,那麼一個txt改成exe,是否有機率可以執行,這是一個很有趣的問題。

    先說第一個,檔案都是以二進位制儲存的,沒有錯,電腦上無論什麼檔案的本質都是一堆的0和1。

    TXT文字檔案是一種用來顯示字元的檔案,有不同的編碼方式,是用來顯示資料的。EXE是軟體程式編譯過的程式碼檔案,是用來執行的。

    那麼把一個TXT,改成EXE能不能執行呢?

    口說無憑,現在就測試,如圖新建一個文字檔案:

    儲存成TXT檔案:

    現在改成EXE檔案:

    改名後效果:

    雙擊後的效果:

    一個txt改成exe,是否有機率可以執行?

    沒有!

    李老師簡介:創辦電腦學校,專職從事電腦教學二十餘年。

  • 中秋節和大豐收的關聯?
  • 為何現在的坦克都採用滑膛炮而不是精準度高,射程遠的線膛炮?