Shutdown the computer using assembly

后端 未结 10 665
日久生厌
日久生厌 2020-12-08 11:27

How can I shutdown the computer using only assembly code?

10条回答
  •  借酒劲吻你
    2020-12-08 11:45

    You can try using shellcode for x86Linux machine, this is not malicious code you know, just for fun. This shellcode only executes /sbin/poweroff only tested on Debian version 5.0.5.

    #include 
    #include 
    
    char *shellcode = "\x31\xc0\x50\x68\x72\x6f\x66"
                      "\x66\x68\x70\x6f\x77\x65\x68"
                      "\x6e\x2f\x2f\x2f\x68\x2f\x73"
                      "\x62\x69\x89\xe3\x50\x53\x89"
                      "\xe1\xb0\x0b\xcd\x80\x31\xc0"
                      "\x50\x89\xe3\xb0\x01\xcd\x80";
    
    int main(int argc, char *argv[]) {
        printf("shellcode length ->  %d bytes\n", (int)strlen(shellcode));
        int (*ret)()=(int(*)())shellcode;
        ret();
    
        return 0;
    }
    

    Or this shellcode executes shutdown -h now (run with root) :

    #include 
    #include 
    
    char *shellcode =  "\x31\xc0\x31\xd2\x50\x66\x68\x2d"
                       "\x68\x89\xe7\x50\x6a\x6e\x66\xc7"
                       "\x44\x24\x01\x6f\x77\x89\xe7\x50"
                       "\x68\x64\x6f\x77\x6e\x68\x73\x68"
                       "\x75\x74\x68\x6e\x2f\x2f\x2f\x68"
                       "\x2f\x73\x62\x69\x89\xe3\x52\x56"
                       "\x57\x53\x89\xe1\xb0\x0b\xcd\x80";
    
    int main(int argc, char *argv[]) {
        printf("shellcode length ->  %d bytes\n", (int)strlen(shellcode));
        int (*ret)()=(int(*)())shellcode;
        ret();
    
        return 0;
    }
    

提交回复
热议问题