📄 protect.lst
字号:
protect.x: file format coff-go32
Disassembly of section .text:
40000000 <_code>:
_recurse():
protect.c:8
/*****************************************************************************
*****************************************************************************/
static void recurse(void)
{
recurse();
40000000: 55 push %ebp
40000001: 89 e5 mov %esp,%ebp
40000003: 83 ec 08 sub $0x8,%esp
40000006: e8 f5 ff ff ff call 40000000 <_code>
4000000b: 89 ec mov %ebp,%esp
4000000d: 5d pop %ebp
4000000e: c3 ret
4000000f <.ef>:
4000000f: 90 nop
40000010: 90 nop
40000011: 90 nop
40000012: 90 nop
40000013: 90 nop
40000014: 90 nop
40000015: 90 nop
40000016: 90 nop
40000017: 90 nop
40000018: 90 nop
40000019: 90 nop
4000001a: 90 nop
4000001b: 90 nop
4000001c: 90 nop
4000001d: 90 nop
4000001e: 90 nop
4000001f: 90 nop
40000020: 0a 0a or (%edx),%cl
40000022: 57 push %edi
40000023: 68 65 72 65 20 push $0x20657265
40000028: 64 6f outsl %fs:(%esi),(%dx)
4000002a: 20 79 6f and %bh,0x6f(%ecx)
4000002d: 75 20 jne 4000004f <.ef+0x40>
4000002f: 77 61 ja 40000092 <.ef+0x83>
40000031: 6e outsb %ds:(%esi),(%dx)
40000032: 74 20 je 40000054 <.ef+0x45>
40000034: 69 74 20 74 6f 20 62 imul $0x6c62206f,0x74(%eax,1),%esi
4000003b: 6c
4000003c: 6f outsl %ds:(%esi),(%dx)
4000003d: 77 20 ja 4000005f <.ef+0x50>
4000003f: 74 6f je 400000b0 <.ef+0xa1>
40000041: 64 fs
40000042: 61 popa
40000043: 79 3f jns 40000084 <.ef+0x75>
40000045: 20 3a and %bh,(%edx)
40000047: 29 0a sub %ecx,(%edx)
40000049: 31 2e xor %ebp,(%esi)
4000004b: 20 43 68 and %al,0x68(%ebx)
4000004e: 6f outsl %ds:(%esi),(%dx)
4000004f: 73 65 jae 400000b6 <.ef+0xa7>
40000051: 20 61 6e and %ah,0x6e(%ecx)
40000054: 20 69 6c and %ch,0x6c(%ecx)
40000057: 6c insb (%dx),%es:(%edi)
40000058: 65 gs
40000059: 67 61 addr16 popa
4000005b: 6c insb (%dx),%es:(%edi)
4000005c: 20 6f 70 and %ch,0x70(%edi)
4000005f: 65 gs
40000060: 72 61 jb 400000c3 <.ef+0xb4>
40000062: 74 69 je 400000cd <.ef+0xbe>
40000064: 6f outsl %ds:(%esi),(%dx)
40000065: 6e outsb %ds:(%esi),(%dx)
40000066: 20 66 72 and %ah,0x72(%esi)
40000069: 6f outsl %ds:(%esi),(%dx)
4000006a: 6d insl (%dx),%es:(%edi)
4000006b: 20 74 68 65 and %dh,0x65(%eax,%ebp,2)
4000006f: 20 6c 69 73 and %ch,0x73(%ecx,%ebp,2)
40000073: 74 20 je 40000095 <.ef+0x86>
40000075: 62 65 6c bound %esp,0x6c(%ebp)
40000078: 6f outsl %ds:(%esi),(%dx)
40000079: 77 0a ja 40000085 <.ef+0x76>
4000007b: 32 2e xor (%esi),%ch
4000007d: 20 50 72 and %dl,0x72(%eax)
40000080: 65 gs
40000081: 73 73 jae 400000f6 <.ef+0xe7>
40000083: 20 74 68 65 and %dh,0x65(%eax,%ebp,2)
40000087: 20 63 6f and %ah,0x6f(%ebx)
4000008a: 72 72 jb 400000fe <.ef+0xef>
4000008c: 65 gs
4000008d: 73 70 jae 400000ff <.ef+0xf0>
4000008f: 6f outsl %ds:(%esi),(%dx)
40000090: 6e outsb %ds:(%esi),(%dx)
40000091: 64 69 6e 67 20 6b 65 imul $0x79656b20,%fs:0x67(%esi),%ebp
40000098: 79
40000099: 0a 33 or (%ebx),%dh
4000009b: 2e 20 53 65 and %dl,%cs:0x65(%ebx)
4000009f: 65 20 69 66 and %ch,%gs:0x66(%ecx)
400000a3: 20 61 70 and %ah,0x70(%ecx)
400000a6: 70 20 jo 400000c8 <.ef+0xb9>
400000a8: 63 72 61 arpl %si,0x61(%edx)
400000ab: 73 68 jae 40000115 <.ef+0x106>
400000ad: 65 gs
400000ae: 73 20 jae 400000d0 <.ef+0xc1>
400000b0: 61 popa
400000b1: 6e outsb %ds:(%esi),(%dx)
400000b2: 64 20 62 75 and %ah,%fs:0x75(%edx)
400000b6: 72 6e jb 40000126 <.ef+0x117>
400000b8: 73 0a jae 400000c4 <.ef+0xb5>
400000ba: 0a 00 or (%eax),%al
400000bc: 8d 74 26 00 lea 0x0(%esi,1),%esi
400000c0: 5b pop %ebx
400000c1: 31 5d 20 xor %ebx,0x20(%ebp)
400000c4: 52 push %edx
400000c5: 65 gs
400000c6: 61 popa
400000c7: 64 20 6d 65 and %ch,%fs:0x65(%ebp)
400000cb: 6d insl (%dx),%es:(%edi)
400000cc: 6f outsl %ds:(%esi),(%dx)
400000cd: 72 79 jb 40000148 <.ef+0x139>
400000cf: 20 6c 6f 63 and %ch,0x63(%edi,%ebp,2)
400000d3: 61 popa
400000d4: 74 69 je 4000013f <.ef+0x130>
400000d6: 6f outsl %ds:(%esi),(%dx)
400000d7: 6e outsb %ds:(%esi),(%dx)
400000d8: 20 30 and %dh,(%eax)
400000da: 78 46 js 40000122 <.ef+0x113>
400000dc: 46 inc %esi
400000dd: 46 inc %esi
400000de: 46 inc %esi
400000df: 30 30 xor %dh,(%eax)
400000e1: 30 30 xor %dh,(%eax)
400000e3: 0a 5b 32 or 0x32(%ebx),%bl
400000e6: 5d pop %ebp
400000e7: 20 57 72 and %dl,0x72(%edi)
400000ea: 69 74 65 20 6d 65 6d imul $0x6f6d656d,0x20(%ebp,2),%esi
400000f1: 6f
400000f2: 72 79 jb 4000016d <.ef+0x15e>
400000f4: 20 6c 6f 63 and %ch,0x63(%edi,%ebp,2)
400000f8: 61 popa
400000f9: 74 69 je 40000164 <.ef+0x155>
400000fb: 6f outsl %ds:(%esi),(%dx)
400000fc: 6e outsb %ds:(%esi),(%dx)
400000fd: 20 30 and %dh,(%eax)
400000ff: 78 46 js 40000147 <.ef+0x138>
40000101: 46 inc %esi
40000102: 46 inc %esi
40000103: 46 inc %esi
40000104: 30 30 xor %dh,(%eax)
40000106: 30 30 xor %dh,(%eax)
40000108: 0a 5b 33 or 0x33(%ebx),%bl
4000010b: 5d pop %ebp
4000010c: 20 52 65 and %dl,0x65(%edx)
4000010f: 61 popa
40000110: 64 20 66 72 and %ah,%fs:0x72(%esi)
40000114: 6f outsl %ds:(%esi),(%dx)
40000115: 6d insl (%dx),%es:(%edi)
40000116: 20 49 2f and %cl,0x2f(%ecx)
40000119: 4f dec %edi
4000011a: 20 70 6f and %dh,0x6f(%eax)
4000011d: 72 74 jb 40000193 <.ef+0x184>
4000011f: 20 30 and %dh,(%eax)
40000121: 78 38 js 4000015b <.ef+0x14c>
40000123: 30 0a xor %cl,(%edx)
40000125: 5b pop %ebx
40000126: 34 5d xor $0x5d,%al
40000128: 20 57 72 and %dl,0x72(%edi)
4000012b: 69 74 65 20 74 6f 20 imul $0x49206f74,0x20(%ebp,2),%esi
40000132: 49
40000133: 2f das
40000134: 4f dec %edi
40000135: 20 70 6f and %dh,0x6f(%eax)
40000138: 72 74 jb 400001ae <.ef+0x19f>
4000013a: 20 30 and %dh,(%eax)
4000013c: 78 38 js 40000176 <.ef+0x167>
4000013e: 30 0a xor %cl,(%edx)
40000140: 5b pop %ebx
40000141: 35 5d 20 64 69 xor $0x6964205d,%eax
40000146: 73 61 jae 400001a9 <.ef+0x19a>
40000148: 62 6c 65 28 bound %ebp,0x28(%ebp,2)
4000014c: 29 20 sub %esp,(%eax)
4000014e: 28 43 4c sub %al,0x4c(%ebx)
40000151: 49 dec %ecx
40000152: 29 0a sub %ecx,(%edx)
40000154: 5b pop %ebx
40000155: 36 ss
40000156: 5d pop %ebp
40000157: 20 49 6e and %cl,0x6e(%ecx)
4000015a: 66 69 6e 69 74 65 imul $0x6574,0x69(%esi),%bp
40000160: 20 72 65 and %dh,0x65(%edx)
40000163: 63 75 72 arpl %si,0x72(%ebp)
40000166: 73 69 jae 400001d1 <.ef+0x1c2>
40000168: 76 65 jbe 400001cf <.ef+0x1c0>
4000016a: 20 63 61 and %ah,0x61(%ebx)
4000016d: 6c insb (%dx),%es:(%edi)
4000016e: 6c insb (%dx),%es:(%edi)
4000016f: 20 63 61 and %ah,0x61(%ebx)
40000172: 75 73 jne 400001e7 <.ef+0x1d8>
40000174: 69 6e 67 20 73 74 61 imul $0x61747320,0x67(%esi),%ebp
4000017b: 63 6b 20 arpl %bp,0x20(%ebx)
4000017e: 6f outsl %ds:(%esi),(%dx)
4000017f: 76 65 jbe 400001e6 <.ef+0x1d7>
40000181: 72 66 jb 400001e9 <.ef+0x1da>
40000183: 6c insb (%dx),%es:(%edi)
40000184: 6f outsl %ds:(%esi),(%dx)
40000185: 77 0a ja 40000191 <.ef+0x182>
40000187: 5b pop %ebx
40000188: 37 aaa
40000189: 5d pop %ebp
4000018a: 20 44 69 76 and %al,0x76(%ecx,%ebp,2)
4000018e: 69 64 65 20 62 79 20 imul $0x7a207962,0x20(%ebp,2),%esp
40000195: 7a
40000196: 65 gs
40000197: 72 6f jb 40000208 <_main>
40000199: 0a 00 or (%eax),%al
4000019b: 4b dec %ebx
4000019c: 65 gs
4000019d: 79 20 jns 400001bf <.ef+0x1b0>
4000019f: 70 72 jo 40000213 <_main+0xb>
400001a1: 65 gs
400001a2: 73 73 jae 40000217 <_main+0xf>
400001a4: 65 64 20 77 61 and %dh,%fs:%gs:0x61(%edi)
400001a9: 73 20 jae 400001cb <.ef+0x1bc>
400001ab: 27 daa
400001ac: 25 63 27 0a 00 and $0xa2763,%eax
400001b1: 25 75 0a 00 49 and $0x49000a75,%eax
400001b6: 6e outsb %ds:(%esi),(%dx)
400001b7: 76 61 jbe 4000021a <_main+0x12>
400001b9: 6c insb (%dx),%es:(%edi)
400001ba: 69 64 20 6b 65 79 2c imul $0x202c7965,0x6b(%eax,1),%esp
400001c1: 20
400001c2: 74 72 je 40000236 <_main+0x2e>
400001c4: 79 20 jns 400001e6 <.ef+0x1d7>
400001c6: 61 popa
400001c7: 67 61 addr16 popa
400001c9: 69 6e 0a 00 90 90 90 imul $0x90909000,0xa(%esi),%ebp
400001d0: 90 nop
400001d1: 90 nop
400001d2: 90 nop
400001d3: 90 nop
400001d4: 90 nop
400001d5: 90 nop
400001d6: 90 nop
400001d7: 90 nop
400001d8: 90 nop
400001d9: 90 nop
400001da: 90 nop
400001db: 90 nop
400001dc: 90 nop
400001dd: 90 nop
400001de: 90 nop
400001df: 90 nop
400001e0: 48 dec %eax
400001e1: 65 gs
400001e2: 79 2c jns 40000210 <_main+0x8>
400001e4: 20 69 74 and %ch,0x74(%ecx)
400001e7: 20 77 6f and %dh,0x6f(%edi)
400001ea: 72 6b jb 40000257 <_main+0x4f>
400001ec: 65 64 21 20 and %esp,%fs:%gs:(%eax)
400001f0: 42 inc %edx
400001f1: 65 gs
400001f2: 74 74 je 40000268 <_main+0x60>
400001f4: 65 gs
400001f5: 72 20 jb 40000217 <_main+0xf>
400001f7: 66 69 78 20 74 68 imul $0x6874,0x20(%eax),%di
400001fd: 65 20 6b 65 and %ch,%gs:0x65(%ebx)
40000201: 72 6e jb 40000271 <_main+0x69>
40000203: 65 gs
40000204: 6c insb (%dx),%es:(%edi)
40000205: 0a 00 or (%eax),%al
40000207: 90 nop
40000208 <_main>:
_main():
protect.c:22
}
/*****************************************************************************
for MinGW32
*****************************************************************************/
#ifdef __WIN32__
int __main(void) { return 0; }
#endif
/*****************************************************************************
*****************************************************************************/
int main(void)
{
unsigned char key;
printf("\n\nWhere do you want it to blow today? :)\n"
40000208: 55 push %ebp
40000209: 89 e5 mov %esp,%ebp
4000020b: 83 ec 10 sub $0x10,%esp
4000020e: 56 push %esi
4000020f: 53 push %ebx
40000210: 83 c4 f4 add $0xfffffff4,%esp
40000213: 68 20 00 00 40 push $0x40000020
40000218: e8 33 01 00 00 call 40000350 <_printf>
protect.c:26
"1. Chose an illegal operation from the list below\n"
"2. Press the corresponding key\n"
"3. See if app crashes and burns\n\n");
printf("[1] Read memory location 0xFFFF0000\n"
4000021d: 83 c4 f4 add $0xfffffff4,%esp
40000220: 68 c0 00 00 40 push $0x400000c0
40000225: e8 26 01 00 00 call 40000350 <_printf>
protect.c:34
"[2] Write memory location 0xFFFF0000\n"
"[3] Read from I/O port 0x80\n"
"[4] Write to I/O port 0x80\n"
"[5] disable() (CLI)\n"
"[6] Infinite recursive call causing stack overflow\n"
"[7] Divide by zero\n");
/* turn off keyboard input buffering */
(void)ioctl(0, 0, 1);
4000022a: 83 c4 20 add $0x20,%esp
4000022d: 83 c4 fc add $0xfffffffc,%esp
40000230: 6a 01 push $0x1
40000232: 6a 00 push $0x0
40000234: 6a 00 push $0x0
40000236: e8 35 01 00 00 call 40000370 <_ioctl>
protect.c:35
while(1)
4000023b: 83 c4 10 add $0x10,%esp
4000023e: 8d 5d ff lea 0xffffffff(%ebp),%ebx
40000241: be 85 02 00 40 mov $0x40000285,%esi
protect.c:37
{
if(read(0, &key, 1) != 1)
40000246: 83 c4 fc add $0xfffffffc,%esp
40000249: 6a 01 push $0x1
4000024b: 53 push %ebx
4000024c: 6a 00 push $0x0
4000024e: e8 3d 01 00 00 call 40000390 <_read>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -