發表文章

目前顯示的是有「資訊安全」標籤的文章

資訊安全:組合語言 Debug 工具簡介

圖片
此文章的測試環境為  Virtualbox 虛擬機 上的 Windows XP Pro版本。此篇文章是以 MS Dos 的 Debug 工具來撰寫組合語言。 MS DOS Debug 軟體介紹 MS DOS 下的 DEBUG 為可以檢視記憶體內容、直接存取記憶體內容、撰寫簡易組合語言程式以及程式除錯等功能的工具程式。執行方式為【 開啟命令提示字元(Command Prompt) 】 接著鍵入【 Debug 】,就會進入到 Debug 程式裡。 而Debug 的指令說明如下: C:\DOCUME~ 1 \admin>debug -? assemble A [address] compare C range address dump D [range] enter E address [list] fill F range list go G [ = address] [addresses] hex H value 1 value 2 input I port load L [address] [drive] [firstsector] [number] move M range address name N [pathname] [arglist] output O port byte proceed P [ = address] [number] quit Q register R [register] search S range list trace T [ = address] [value] unassemble U [range] write W [address] [drive] [firstsector] [number] allocate expanded memory XA [#pages] deallocate expanded memory XD [handle] map expanded memory pages ...

資訊安全:惡作劇程式

圖片
此篇文章將使用C++程式寫些惱人的程式。測試環境為 Virtualbox 虛擬機 上的 Windows XP Pro版本,C++ IDE為 Code::Blocks 。 貪吃鬼(灌爆硬碟、吃光記憶體) 吃光記憶體C程式碼: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #include <stdio.h> #include <stdlib.h> int main () { char * data; // the data long long int N = ( 1024 * 1024 * 1024 ); // Memory size data = ( char * ) malloc(N); // Generate Random value for ( int i =0 ;i < N;i ++ ){ data[i] = ( char ) rand(); } return 0 ; } 結果:還沒吃記憶體前,XP作業系統會刪掉此程式(當記憶體使用率 Mem Usage快暴時,下圖中的Hi.exe會突然不見)。 灌爆硬碟C程式碼: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 #include <stdio.h> #include <stdlib.h> int main () { char * data; // data to be written int N = ( 1024*1024 ); // 10M for each flush data = ( char * ) malloc(N); // Generate Random value for ( int i =0 ;i < N;i ++ ){ data[i] = ( char ) rand(); } // T...

資訊安全:執行檔的修改

圖片
筆者最近看了一些和資訊安全相關的書籍與資訊之後,興起「直接修改執行檔,看看會發生什麼事」的念頭。此文章的測試環境為 Virtualbox 虛擬機 上的 Windows XP Pro版本,C++ IDE為 Code::Blocks 。編輯器(Editor)可以使用UltraEdit,或是可以修改Hex的 Hex Editor ,筆者是用WinHex:  http://www.winhex.com/winhex/hex-editor.html 入門範例一:修改Console的文字(Hello World) 使用C++ IDE 建立一個 C 專案,主程式的內容如下: 1 2 3 4 5 6 7 8 9 #include <stdio.h> #include <stdlib.h> int main () { printf( "Hello world! \n " ); system( "pause" ); return 0 ; } 將編譯好後的執行檔用 WinHex 開啟,會看到如下畫面: 找出 Hello World字串,並修改,類似下圖: Hello World! 改成 Ifmmp!xpsme,並存檔為 HiHi.exe,Hi.exe 與 HiHi執行結果如下圖: 上圖左邊的 Console Windows 是 Hi.exe的執行結果。 上圖又邊的 Console Windows 是 HiHi.exe的執行結果。 可以看的出來,不用修改程式碼就可以將程式的輸出訊息給修改了。 入門範例二:修改有密碼保護的程式 使用C++ IDE 建立一個 C 專案,主程式的內容如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 #include <stdio.h> #include <stdlib.h> #include <string.h> int main () { char password[ 9 ]; char key[] = "12345678...