Executable

執行二進制程式碼

  • May 14, 2016

我有一個二進制程式碼,我想執行它。

01001000 01100101 01101100 01101100 01101111 00100000 01010111 01101111 01110010 01101100 01100100

如何創建文件“application/x-executable”並在 Debian 上執行?

那隻是“Hello World”的ascii編碼的二進製表示,不是執行檔,沒有辦法執行它。

那實際上不是可執行程式碼。它只是 8 位 ASCII 中的二進製字元串內容“Hello World”。

既然你要求一個程序,你可以在 C 中做這樣的事情:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>


char *bin2str(char *binStr) {
       int len;
       int i = 0; // input cursor
       int j = 0; // binary cursor used to allow spaces in the input
       static char str[256]; // keep it simple and limit the length

       len = strlen(binStr); // avoid recounting every time

       if (len > 256 * 8 - 1) { // impose the limit
               fprintf(stderr, "Error!  Input string too long\n");
               exit(2);
       }

       for (i = 0; i < len; i ++) {
               switch(binStr[i]) {
                       case ' ':
                               continue;
                               break;

                       case '0':
                       case '1':
                               break;  // valid :)

                       default:
                               fprintf(stderr, "Encountered an invalid binary number ('%c') at offset %d!\nAborting\n", binStr[i], i);
                               exit(3);
               }


               if (j % 8 == 0) {
                       str[j / 8] = 0; // initialize char
               }

               if (binStr[i] == '1') {
                       str[j / 8] |= 1 << (7 - (j % 8));
               }

               j ++;
       }

       str[i / 8] = '\0'; // null terminate string

       return str;
}


int main(int argc, char *argv[]) {
       if (argc != 2) {
               fprintf(stderr, "Usage:\t%s binary string\n", argv[0]);
               exit(1);
       }

       printf("Conversion output: \n%s\n", bin2str(argv[1]));

       return 0;
}

引用自:https://unix.stackexchange.com/questions/282990