<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      謎題:打造極小ELF文件輸出文件(使用匯編語言通過系統調用來實現)

      接上文《謎題:打造極小ELF文件輸出文件(通過C語言來實現)》

      在本篇中,我們要寫出一段直接通過系統調用的方式、且使用盡可能少的指令的匯編代碼來實現目標。

      1. 可以省略的代碼,就省略。例如,在準備系統調用的參數時,若寄存器中已有需要的內容,則無需重復賦值。
      2. 能使用低位寄存器,就使用低位寄存器。例如,假設rax已經清空,賦值一個小于,就可以給al賦值,可節省相應的機器指令長度。
      3. 系統調用sys_exit的返回值可以不為零。

      根據以上思路,經過一番努力,我們得到了以下匯編代碼。

      open.s
      .section .bss
      .equ bufSIZE, 65535
      .lcomm buf, bufSIZE
      
      .section .text
      .globl _start
      
      _start:
      // 2 sys_open(const char *filename, int flags, int mode)
      //xor %rax, %rax
      mov $0x2, %al
      mov 16(%rsp),%rdi;
      //mov $0x0, %rsi
      syscall
      
      // 0 sys_read(unsigned int fd, char *buf, size_t count)
      mov %rax, %rdi
      xor %rax, %rax
      mov $buf, %esi
      mov $bufSIZE, %dx
      syscall
      
      // 1 sys_write(unsigned int fd, const char *buf, size_t count)
      mov %rax, %rdx
      xor %rax, %rax
      mov $0x1, %al
      xor %rdi, %rdi
      mov $0x1, %dil
      syscall
      
      // 3, sys_close(unsigned int fd)
      xor %rax, %rax
      mov $0x3, %al
      syscall
      
      // 60, sys_exit(int error_code)
      mov $0x3c, %al
      //xor %rdi, %rdi
      syscall

      通過as命令匯編,ld命令鏈接,我們得到了64位ELF格式的可執行文件,大小952字節。

      [root@i-a77ugr2f tmp]# as open.s -o open.o
      [root@i-a77ugr2f tmp]# ld open.o -o open
      [root@i-a77ugr2f tmp]# ll open
      -rwxr-xr-x 1 root root 952 Nov  6 22:48 open
      [root@i-a77ugr2f tmp]# ./open /etc/passwd
      # 可以正常輸出

      通過查閱資料發現,節區表對ELF可執行文件的運行是沒有任何影響的,因此可以直接刪除。這里我們使用現成的工具sstrip來實現。

      # 編譯安裝sstrip
      [root@i-a77ugr2f tmp]# git clone https://github.com/BR903/ELFkickers
      [root@i-a77ugr2f tmp]# cd ELFkickers/sstrip/
      [root@i-a77ugr2f tmp]# make
      [root@i-a77ugr2f tmp]# cp sstrip /usr/bin/
      
      # 刪除ELF可執行文件的節區表
      [root@i-a77ugr2f tmp]# sstrip open
      [root@i-a77ugr2f tmp]# ll open
      -rwxr-xr-x 1 root root 232 Oct 19 11:15 open
      [root@i-a77ugr2f tmp]# ./open /etc/passwd
      # 可以正常輸出

      到這里,我們獲得了一個232字節的ELF可執行文件。

      posted @ 2022-11-08 00:52  Cathon  閱讀(158)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲中文字幕有综合久久| 日韩有码中文在线观看| 国产精品久久久久9999| 午夜免费视频国产在线 | 国产精品一区二区小视频| 国产成AV人片久青草影院| 少妇人妻系列无码专区视频| 免费无遮挡无码永久视频| 亚洲精品免费一二三区| 99久久激情国产精品| 国产嫩草精品网亚洲av| 中文字幕有码日韩精品| 精品国产精品国产偷麻豆| 国产99视频精品免费视频6| 色情一区二区三区免费看| 日韩av一区二区精品不卡| 激情综合色综合啪啪开心| 18禁动漫一区二区三区| 国产精品国产高清国产av| 久久99日本免费国产精品| 成年女人喷潮免费视频| 欧美日韩精品一区二区视频| 国产精品毛片在线完整版| 日韩在线视频网| 日韩av熟女人妻一区二| 国产av不卡一区二区| 西安市| 国产成人精品一区二区无| 亚洲V天堂V手机在线| av区无码字幕中文色| 精品一二三四区在线观看| 亚洲欧美综合中文| 成人国产精品中文字幕| 国产成人啪精品午夜网站| 亚洲中文字幕无码一区日日添 | 2021国产精品视频网站| 高颜值午夜福利在线观看| xxxxbbbb欧美残疾人| 色99久久久久高潮综合影院| 嗯灬啊灬把腿张开灬动态图| 国产色视频网站免费|