识别INSB号码C语言如何讲述,探究机器码,深入研究C语言程序的机制

用C高级编程语言写的程序,都要经过编译链接成本机可执行的程序。这个可执行程序究竟是什么呢?在Linux上,我们可以用objdump命令很方便地查看一个可执行程序的机器码。我们从一个简单的示例开始,说一说怎么理解机器码。

一、一个简单的c代码,什么都不做: testc.c

1 #include 2

3 int main(int argc, char **argv)4{5

6 return 1;7 }

这段代码异常简单,只是向系统返回一个值为1的量即可。

二、Makefile文件如下:

1testc:testc.o2 gcc -S testc.c -o testc.s3 gcc testc.c -o testc4 objdump -D testc >dumpTestc.txt5

6clean:7 rm testc testc.s testc.o dumpTestc.txt

不要觉得这么简单的程序还需要Makefile文件,但是为了使用方便,还是使用更方便:

生成了:

可执行文件testc,

生成了目标文件testc.o,

生成了汇编文件testc.s

生成了机器码与汇编对应的文件dumpTestc.txt

还可以借助clean完成中间生成文件的清理工作

make

完成上边工作的一键处理化,最后,查看文件分别如下:

1 .file "testc.c"

2.text3.globl main4.type main, @function5main:6.LFB0:7.cfi_startproc8 pushq %rbp9 .cfi_def_cfa_offset 16

10 .cfi_offset 6, -16

11 movq %rsp, %rbp12 .cfi_def_cfa_register 6

13 movl %edi, -4(%rbp)14 movq %rsi, -16(%rbp)15 movl $1, %eax16 popq %rbp17 .cfi_def_cfa 7, 8

18ret19.cfi_endproc20.LFE0:21 .size main, .-main22 .ident "GCC: (GNU) 9.2.0"

23 .section .note.GNU-stack,"",@progbits

再次查看机器码和汇编对应的代码:

1 testc: 文件格式 elf64-x86-64

2

3

4 Disassembly of section .interp:5

6 00000000000002a8 :7 2a8: 2f (bad)8 2a9: 6c insb (%dx),%es:(%rdi)9 2aa: 69 62 36 34 2f 6c 64 imul $0x646c2f34,0x36(%rdx),%esp10 2b1: 2d 6c 69 6e 75 sub $0x756e696c,%eax11 2b6: 78 2d js 2e5 0xd1b>

12 2b8: 78 38 js 2f2 0xd0e>

13 2ba: 36 2d 36 34 2e 73 ss sub $0x732e3436,%eax14 2c0: 6f outsl %ds:(%rsi),(%dx)15 2c1: 2e 32 00 xor %cs:(%rax),%al16

17 Disassembly of section .note.gnu.build-id:18

19 00000000000002c4 :20 2c4: 04 00 add $0x0,%al21 2c6: 00 00 add %al,(%rax)22 2c8: 14 00 adc $0x0,%al23 2ca: 00 00 add %al,(%rax)24 2cc: 03 00 add (%rax),%eax25 2ce: 00 00 add %al,(%rax)26 2d0: 47rex.RXB27 2d1: 4e 55 rex.WRX push %rbp28 2d3: 00 34 8d 24 f6 a9 18 add %dh,0x18a9f624(,%rcx,4)29 2da: 9b fwait30 2db: 61(bad)31 2dc: 09 fe or %edi,%esi32 2de: 363f ss (bad)33 2e0: 8d (bad)34 2e1: d1 71 dc shll -0x24(%rcx)35 2e4: 9f lahf36 2e5: 65 b4 80 gs mov $0x80,%ah37

38 Disassembly of section .note.ABI-tag:39

40 00000000000002e8 :41 2e8: 04 00 add $0x0,%al42 2ea: 00 00 add %al,(%rax)43 2ec: 10 00 adc %al,(%rax)44 2ee: 00 00 add %al,(%rax)45 2f0: 01 00 add %eax,(%rax)46 2f2: 00 00 add %al,(%rax)47 2f4: 47rex.RXB48 2f5: 4e 55 rex.WRX push %rbp49 2f7: 00 00 add %al,(%rax)50 2f9: 00 00 add %al,(%rax)51 2fb: 00 03 add %al,(%rbx)52 2fd: 00 00 add %al,(%rax)53 2ff: 00 02 add %al,(%rdx)54 301: 00 00 add %al,(%rax)55 303: 00 00 add %al,(%rax)56 305: 00 00 add %al,(%rax)57 ...58

59 Disassembly of section .gnu.hash:60

61 0000000000000308 :62 308: 01 00 add %eax,(%rax)63 30a: 00 00 add %al,(%rax)64 30c: 01 00 add %eax,(%rax)65 30e: 00 00 add %al,(%rax)66 310: 01 00 add %eax,(%rax)67 ...68

69 Disassembly of section .dynsym:70

71 0000000000000328 :72 ...73 340: 38 00 cmp %al,(%rax)74 342: 00 00 add %al,(%rax)75 344: 20 00 and %al,(%rax)76 ...77 356: 00 00 add %al,(%rax)78 358: 1a 00 sbb (%rax),%al79 35a: 00 00 add %al,(%rax)80 35c: 12 00 adc (%rax),%al81 ...82 36e: 00 00 add %al,(%rax)83 370: 54 push %rsp84 371: 00 00 add %al,(%rax)85 373: 00 20 add %ah,(%rax)86 ...87 385: 00 00 add %al,(%rax)88 387: 00 63 00 add %ah,0x0(%rbx)89 38a: 00 00 add %al,(%rax)90 38c: 20 00 and %al,(%rax)91 ...92 39e: 00 00 add %al,(%rax)93 3a0: 0b 00 or (%rax),%eax94 3a2: 00 00 add %al,(%rax)95 3a4: 22 00 and (%rax),%al96 ...97

98 Disassembly of section .dynstr:99

100 00000000000003b8 :101 3b8: 00 6c 69 62 add %ch,0x62(%rcx,%rbp,2)102 3bc: 63 2e movslq (%rsi),%ebp103 3be: 73 6f jae 42f 0xbd1>

104 3c0: 2e 36 00 5f 5f cs add %bl,%ss:0x5f(%rdi)105 3c5: 63 78 61 movslq 0x61(%rax),%edi106 3c8: 5f pop %rdi107 3c9: 66 69 6e 61 6c 69 imul $0x696c,0x61(%rsi),%bp108 3cf: 7a 65 jp 436 0xbca>

109 3d1: 00 5f 5f add %bl,0x5f(%rdi)110 3d4: 6c insb (%dx),%es:(%rdi)111 3d5: 69 62 63 5f 73 74 61 imul $0x6174735f,0x63(%rdx),%esp112 3dc: 72 74 jb 452 0xbae>

113 3de: 5f pop %rdi114 3df: 6d insl (%dx),%es:(%rdi)115 3e0: 61(bad)116 3e1: 69 6e 00 47 4c 49 42 imul $0x42494c47,0x0(%rsi),%ebp117 3e8: 43 5f rex.XB pop %r15118 3ea: 32 2e xor (%rsi),%ch119 3ec: 32 2e xor (%rsi),%ch120 3ee: 35 00 5f 49 54 xor $0x54495f00,%eax121 3f3: 4d 5f rex.WRB pop %r15122 3f5: 64 65 72 65 fs gs jb 45e 0xba2>

123 3f9: 67 69 73 74 65 72 54 imul $0x4d547265,0x74(%ebx),%esi124 400: 4d125 401: 43 6c rex.XB insb (%dx),%es:(%rdi)126 403: 6f outsl %ds:(%rsi),(%dx)127 404: 6e outsb %ds:(%rsi),(%dx)128 405: 65 54 gs push %rsp129 407: 61(bad)130 408: 62(bad)131 409: 6c insb (%dx),%es:(%rdi)132 40a: 65 00 5f 5f add %bl,%gs:0x5f(%rdi)133 40e: 67 6d insl (%dx),%es:(%edi)134 410: 6f outsl %ds:(%rsi),(%dx)135 411: 6e outsb %ds:(%rsi),(%dx)136 412: 5f pop %rdi137 413: 73 74 jae 489 0xb77>

138 415: 61(bad)139 416: 72 74 jb 48c 0xb74>

140 418: 5f pop %rdi141 419: 5f pop %rdi142 41a: 00 5f 49 add %bl,0x49(%rdi)143 41d: 54 push %rsp144 41e: 4d 5f rex.WRB pop %r15145 420: 72 65 jb 487 0xb79>

146 422: 67 69 73 74 65 72 54 imul $0x4d547265,0x74(%ebx),%esi147 429: 4d148 42a: 43 6c rex.XB insb (%dx),%es:(%rdi)149 42c: 6f outsl %ds:(%rsi),(%dx)150 42d: 6e outsb %ds:(%rsi),(%dx)151 42e: 65 54 gs push %rsp152 430: 61(bad)153 431: 62 .byte 0x62

154 432: 6c insb (%dx),%es:(%rdi)155 433: 65gs156 ...157

158 Disassembly of section .gnu.version:159

160 0000000000000436 :161 436: 00 00 add %al,(%rax)162 438: 00 00 add %al,(%rax)163 43a: 02 00 add (%rax),%al164 43c: 00 00 add %al,(%rax)165 43e: 00 00 add %al,(%rax)166 440: 02 00 add (%rax),%al167

168 Disassembly of section .gnu.version_r:169

170 0000000000000448 :171 448: 01 00 add %eax,(%rax)172 44a: 01 00 add %eax,(%rax)173 44c: 01 00 add %eax,(%rax)174 44e: 00 00 add %al,(%rax)175 450: 10 00 adc %al,(%rax)176 452: 00 00 add %al,(%rax)177 454: 00 00 add %al,(%rax)178 456: 00 00 add %al,(%rax)179 458: 75 1a jne 474 0xb8c>

180 45a: 69 09 00 00 02 00 imul $0x20000,(%rcx),%ecx181 460: 2c 00 sub $0x0,%al182 462: 00 00 add %al,(%rax)183 464: 00 00 add %al,(%rax)184 ...185

186 Disassembly of section .rela.dyn:187

188 0000000000000468 :189 468: 28 3e sub %bh,(%rsi)190 46a: 00 00 add %al,(%rax)191 46c: 00 00 add %al,(%rax)192 46e: 00 00 add %al,(%rax)193 470: 08 00 or %al,(%rax)194 472: 00 00 add %al,(%rax)195 474: 00 00 add %al,(%rax)196 476: 00 00 add %al,(%rax)197 478: 10 11 adc %dl,(%rcx)198 47a: 00 00 add %al,(%rax)199 47c: 00 00 add %al,(%rax)200 47e: 00 00 add %al,(%rax)201 480: 30 3e xor %bh,(%rsi)202 482: 00 00 add %al,(%rax)203 484: 00 00 add %al,(%rax)204 486: 00 00 add %al,(%rax)205 488: 08 00 or %al,(%rax)206 48a: 00 00 add %al,(%rax)207 48c: 00 00 add %al,(%rax)208 48e: 00 00 add %al,(%rax)209 490: c0 10 00 rclb $0x0,(%rax)210 493: 00 00 add %al,(%rax)211 495: 00 00 add %al,(%rax)212 497: 00 20 add %ah,(%rax)213 499: 40 00 00 add %al,(%rax)214 49c: 00 00 add %al,(%rax)215 49e: 00 00 add %al,(%rax)216 4a0: 08 00 or %al,(%rax)217 4a2: 00 00 add %al,(%rax)218 4a4: 00 00 add %al,(%rax)219 4a6: 00 00 add %al,(%rax)220 4a8: 20 40 00 and %al,0x0(%rax)221 4ab: 00 00 add %al,(%rax)222 4ad: 00 00 add %al,(%rax)223 4af: 00 d8 add %bl,%al224 4b1: 3f (bad)225 4b2: 00 00 add %al,(%rax)226 4b4: 00 00 add %al,(%rax)227 4b6: 00 00 add %al,(%rax)228 4b8: 06(bad)229 4b9: 00 00 add %al,(%rax)230 4bb: 00 01 add %al,(%rcx)231 ...232 4c5: 00 00 add %al,(%rax)233 4c7: 00 e0 add %ah,%al234 4c9: 3f (bad)235 4ca: 00 00 add %al,(%rax)236 4cc: 00 00 add %al,(%rax)237 4ce: 00 00 add %al,(%rax)238 4d0: 06(bad)239 4d1: 00 00 add %al,(%rax)240 4d3: 00 02 add %al,(%rdx)241 ...242 4dd: 00 00 add %al,(%rax)243 4df: 00 e8 add %ch,%al244 4e1: 3f (bad)245 4e2: 00 00 add %al,(%rax)246 4e4: 00 00 add %al,(%rax)247 4e6: 00 00 add %al,(%rax)248 4e8: 06(bad)249 4e9: 00 00 add %al,(%rax)250 4eb: 00 03 add %al,(%rbx)251 ...252 4f5: 00 00 add %al,(%rax)253 4f7: 00 f0 add %dh,%al254 4f9: 3f (bad)255 4fa: 00 00 add %al,(%rax)256 4fc: 00 00 add %al,(%rax)257 4fe: 00 00 add %al,(%rax)258 500: 06(bad)259 501: 00 00 add %al,(%rax)260 503: 00 04 00 add %al,(%rax,%rax,1)261 ...262 50e: 00 00 add %al,(%rax)263 510: f8 clc264 511: 3f (bad)265 512: 00 00 add %al,(%rax)266 514: 00 00 add %al,(%rax)267 516: 00 00 add %al,(%rax)268 518: 06(bad)269 519: 00 00 add %al,(%rax)270 51b: 00 05 00 00 00 00 add %al,0x0(%rip) # 521 0xadf>

271 521: 00 00 add %al,(%rax)272 523: 00 00 add %al,(%rax)273 525: 00 00 add %al,(%rax)274 ...275

276 Disassembly of section .init:277

278 0000000000001000 :279 1000: f3 0f 1e fa endbr64280 1004: 48 83 ec 08 sub $0x8,%rsp281 1008: 48 8b 05 d9 2f 00 00 mov 0x2fd9(%rip),%rax # 3fe8 282 100f: 48 85 c0 test %rax,%rax283 1012: 74 02 je 1016 0x16>

284 1014: ff d0 callq *%rax285 1016: 48 83 c4 08 add $0x8,%rsp286 101a: c3 retq287

288 Disassembly of section .text:289

290 0000000000001020 :291 1020: f3 0f 1e fa endbr64292 1024: 31 ed xor %ebp,%ebp293 1026: 49 89 d1 mov %rdx,%r9294 1029: 5e pop %rsi295 102a: 48 89 e2 mov %rsp,%rdx296 102d: 48 83 e4 f0 and $0xfffffffffffffff0,%rsp297 1031: 50 push %rax298 1032: 54 push %rsp299 1033: 4c 8d 05 66 01 00 00 lea 0x166(%rip),%r8 # 11a0 300 103a: 48 8d 0d ef 00 00 00 lea 0xef(%rip),%rcx # 1130 301 1041: 48 8d 3d d1 00 00 00 lea 0xd1(%rip),%rdi # 1119 302 1048: ff 15 92 2f 00 00 callq *0x2f92(%rip) # 3fe0 2.5>

303 104e: f4 hlt304 104f: 90nop305

306 0000000000001050 :307 1050: 48 8d 3d d1 2f 00 00 lea 0x2fd1(%rip),%rdi # 4028 308 1057: 48 8d 05 ca 2f 00 00 lea 0x2fca(%rip),%rax # 4028 309 105e: 48 39 f8 cmp %rdi,%rax310 1061: 74 15 je 1078 0x28>

311 1063: 48 8b 05 6e 2f 00 00 mov 0x2f6e(%rip),%rax # 3fd8 312 106a: 48 85 c0 test %rax,%rax313 106d: 74 09 je 1078 0x28>

314 106f: ff e0 jmpq *%rax315 1071: 0f 1f 80 00 00 00 00 nopl 0x0(%rax)316 1078: c3 retq317 1079: 0f 1f 80 00 00 00 00 nopl 0x0(%rax)318

319 0000000000001080 :320 1080: 48 8d 3d a1 2f 00 00 lea 0x2fa1(%rip),%rdi # 4028 321 1087: 48 8d 35 9a 2f 00 00 lea 0x2f9a(%rip),%rsi # 4028 322 108e: 48 29 fe sub %rdi,%rsi323 1091: 48 89 f0 mov %rsi,%rax324 1094: 48 c1 ee 3f shr $0x3f,%rsi325 1098: 48 c1 f8 03 sar $0x3,%rax326 109c: 48 01 c6 add %rax,%rsi327 109f: 48 d1 fe sar %rsi328 10a2: 74 14 je 10b8 0x38>

329 10a4: 48 8b 05 45 2f 00 00 mov 0x2f45(%rip),%rax # 3ff0 330 10ab: 48 85 c0 test %rax,%rax331 10ae: 74 08 je 10b8 0x38>

332 10b0: ff e0 jmpq *%rax333 10b2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1)334 10b8: c3 retq335 10b9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax)336

337 00000000000010c0 :338 10c0: f3 0f 1e fa endbr64339 10c4: 80 3d 5d 2f 00 00 00 cmpb $0x0,0x2f5d(%rip) # 4028 340 10cb: 75 33 jne 1100 0x40>

341 10cd: 55 push %rbp342 10ce: 48 83 3d 22 2f 00 00 cmpq $0x0,0x2f22(%rip) # 3ff8 2.5>

343 10d5: 00

344 10d6: 48 89 e5 mov %rsp,%rbp345 10d9: 74 0d je 10e8 0x28>

346 10db: 48 8b 3d 3e 2f 00 00 mov 0x2f3e(%rip),%rdi # 4020 347 10e2: ff 15 10 2f 00 00 callq *0x2f10(%rip) # 3ff8 2.5>

348 10e8: e8 63 ff ff ff callq 1050 349 10ed: c6 05 34 2f 00 00 01 movb $0x1,0x2f34(%rip) # 4028 350 10f4: 5d pop %rbp351 10f5: c3 retq352 10f6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1)353 10fd: 00 00 00

354 1100: c3 retq355 1101: 66 66 2e 0f 1f 84 00 data16 nopw %cs:0x0(%rax,%rax,1)356 1108: 00 00 00 00

357 110c: 0f 1f 40 00 nopl 0x0(%rax)358

359 0000000000001110 :360 1110: f3 0f 1e fa endbr64361 1114: e9 67 ff ff ff jmpq 1080 362

363 0000000000001119 :364 1119: 55 push %rbp365 111a: 48 89 e5 mov %rsp,%rbp366 111d: 89 7d fc mov %edi,-0x4(%rbp)367 1120: 48 89 75 f0 mov %rsi,-0x10(%rbp)368 1124: b8 01 00 00 00 mov $0x1,%eax369 1129: 5d pop %rbp370 112a: c3 retq371 112b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1)372

373 0000000000001130 :374 1130: f3 0f 1e fa endbr64375 1134: 41 57 push %r15376 1136: 4c 8d 3d eb 2c 00 00 lea 0x2ceb(%rip),%r15 # 3e28 377 113d: 41 56 push %r14378 113f: 49 89 d6 mov %rdx,%r14379 1142: 41 55 push %r13380 1144: 49 89 f5 mov %rsi,%r13381 1147: 41 54 push %r12382 1149: 41 89 fc mov %edi,%r12d383 114c: 55 push %rbp384 114d: 48 8d 2d dc 2c 00 00 lea 0x2cdc(%rip),%rbp # 3e30 385 1154: 53 push %rbx386 1155: 4c 29 fd sub %r15,%rbp387 1158: 48 83 ec 08 sub $0x8,%rsp388 115c: e8 9f fe ff ff callq 1000 389 1161: 48 c1 fd 03 sar $0x3,%rbp390 1165: 74 1f je 1186 0x56>

391 1167: 31 db xor %ebx,%ebx392 1169: 0f 1f 80 00 00 00 00 nopl 0x0(%rax)393 1170: 4c 89 f2 mov %r14,%rdx394 1173: 4c 89 ee mov %r13,%rsi395 1176: 44 89 e7 mov %r12d,%edi396 1179: 41 ff 14 df callq *(%r15,%rbx,8)397 117d: 48 83 c3 01 add $0x1,%rbx398 1181: 48 39 dd cmp %rbx,%rbp399 1184: 75 ea jne 1170 0x40>

400 1186: 48 83 c4 08 add $0x8,%rsp401 118a: 5b pop %rbx402 118b: 5d pop %rbp403 118c: 41 5c pop %r12404 118e: 41 5d pop %r13405 1190: 41 5e pop %r14406 1192: 41 5f pop %r15407 1194: c3 retq408 1195: 66 66 2e 0f 1f 84 00 data16 nopw %cs:0x0(%rax,%rax,1)409 119c: 00 00 00 00

410

411 00000000000011a0 :412 11a0: f3 0f 1e fa endbr64413 11a4: c3 retq414

415 Disassembly of section .fini:416

417 00000000000011a8 :418 11a8: f3 0f 1e fa endbr64419 11ac: 48 83 ec 08 sub $0x8,%rsp420 11b0: 48 83 c4 08 add $0x8,%rsp421 11b4: c3 retq422

423 Disassembly of section .rodata:424

425 0000000000002000 :426 2000: 01 00 add %eax,(%rax)427 2002: 02 00 add (%rax),%al428

429 Disassembly of section .eh_frame_hdr:430

431 0000000000002004 :432 2004: 01 1b add %ebx,(%rbx)433 2006: 03 3b add (%rbx),%edi434 2008: 28 00 sub %al,(%rax)435 200a: 00 00 add %al,(%rax)436 200c: 04 00 add $0x0,%al437 200e: 00 00 add %al,(%rax)438 2010: 1c f0 sbb $0xf0,%al439 2012: ff (bad)440 2013: ff 44 00 00 incl 0x0(%rax,%rax,1)441 2017: 00 15 f1 ff ff 5c add %dl,0x5cfffff1(%rip) # 5d00200e 0x5cffdfde>

442 201d: 00 00 add %al,(%rax)443 201f: 00 2c f1 add %ch,(%rcx,%rsi,8)444 2022: ff (bad)445 2023: ff (bad)446 2024: 7c 00 jl 2026 0x22>

447 2026: 00 00 add %al,(%rax)448 2028: 9c pushfq449 2029: f1 icebp450 202a: ff (bad)451 202b: ff c4 inc %esp452 202d: 00 00 add %al,(%rax)453 ...454

455 Disassembly of section .eh_frame:456

457 0000000000002030 0xac>:458 2030: 14 00 adc $0x0,%al459 2032: 00 00 add %al,(%rax)460 2034: 00 00 add %al,(%rax)461 2036: 00 00 add %al,(%rax)462 2038: 01 7a 52 add %edi,0x52(%rdx)463 203b: 00 01 add %al,(%rcx)464 203d: 78 10 js 204f 0x4b>

465 203f: 01 1b add %ebx,(%rbx)466 2041: 0c 07 or $0x7,%al467 2043: 08 90 01 00 00 14 or %dl,0x14000001(%rax)468 2049: 00 00 add %al,(%rax)469 204b: 00 1c 00 add %bl,(%rax,%rax,1)470 204e: 00 00 add %al,(%rax)471 2050: d0 ef shr %bh472 2052: ff (bad)473 2053: ff 2f ljmp *(%rdi)474 2055: 00 00 add %al,(%rax)475 2057: 00 00 add %al,(%rax)476 2059: 44 07rex.R (bad)477 205b: 10 00 adc %al,(%rax)478 205d: 00 00 add %al,(%rax)479 205f: 00 1c 00 add %bl,(%rax,%rax,1)480 2062: 00 00 add %al,(%rax)481 2064: 34 00 xor $0x0,%al482 2066: 00 00 add %al,(%rax)483 2068: b1 f0 mov $0xf0,%cl484 206a: ff (bad)485 206b: ff 12 callq *(%rdx)486 206d: 00 00 add %al,(%rax)487 206f: 00 00 add %al,(%rax)488 2071: 410e rex.B (bad)489 2073: 10 86 02 43 0d 06 adc %al,0x60d4302(%rsi)490 2079: 4d 0c 07 rex.WRB or $0x7,%al491 207c: 08 00 or %al,(%rax)492 207e: 00 00 add %al,(%rax)493 2080: 44 00 00 add %r8b,(%rax)494 2083: 00 54 00 00 add %dl,0x0(%rax,%rax,1)495 2087: 00 a8 f0 ff ff 65 add %ch,0x65fffff0(%rax)496 208d: 00 00 add %al,(%rax)497 208f: 00 00 add %al,(%rax)498 2091: 460e rex.RX (bad)499 2093: 10 8f 02 49 0e 18 adc %cl,0x180e4902(%rdi)500 2099: 8e 03 mov (%rbx),%es501 209b: 450e rex.RB (bad)502 209d: 20 8d 04 45 0e 28 and %cl,0x280e4504(%rbp)503 20a3: 8c 05 44 0e 30 86 mov %es,-0x79cff1bc(%rip) # ffffffff86302eed 0xffffffff862feebd>

504 20a9: 06(bad)505 20aa: 480e rex.W (bad)506 20ac: 38 83 07 47 0e 40 cmp %al,0x400e4707(%rbx)507 20b2: 6e outsb %ds:(%rsi),(%dx)508 20b3: 0e (bad)509 20b4: 38 41 0e cmp %al,0xe(%rcx)510 20b7: 30 41 0e xor %al,0xe(%rcx)511 20ba: 28 42 0e sub %al,0xe(%rdx)512 20bd: 20 42 0e and %al,0xe(%rdx)513 20c0: 18 42 0e sbb %al,0xe(%rdx)514 20c3: 10 42 0e adc %al,0xe(%rdx)515 20c6: 08 00 or %al,(%rax)516 20c8: 10 00 adc %al,(%rax)517 20ca: 00 00 add %al,(%rax)518 20cc: 9c pushfq519 20cd: 00 00 add %al,(%rax)520 20cf: 00 d0 add %dl,%al521 20d1: f0 ff lock(bad)522 20d3: ff 05 00 00 00 00 incl 0x0(%rip) # 20d9 0xd5>

523 20d9: 00 00 add %al,(%rax)524 ...525

526 00000000000020dc :527 20dc: 00 00 add %al,(%rax)528 ...529

530 Disassembly of section .init_array:531

532 0000000000003e28 :533 3e28: 10 11 adc %dl,(%rcx)534 3e2a: 00 00 add %al,(%rax)535 3e2c: 00 00 add %al,(%rax)536 ...537

538 Disassembly of section .fini_array:539

540 0000000000003e30 :541 3e30: c0 10 00 rclb $0x0,(%rax)542 3e33: 00 00 add %al,(%rax)543 3e35: 00 00 add %al,(%rax)544 ...545

546 Disassembly of section .dynamic:547

548 0000000000003e38 :549 3e38: 01 00 add %eax,(%rax)550 3e3a: 00 00 add %al,(%rax)551 3e3c: 00 00 add %al,(%rax)552 3e3e: 00 00 add %al,(%rax)553 3e40: 01 00 add %eax,(%rax)554 3e42: 00 00 add %al,(%rax)555 3e44: 00 00 add %al,(%rax)556 3e46: 00 00 add %al,(%rax)557 3e48: 0c 00 or $0x0,%al558 3e4a: 00 00 add %al,(%rax)559 3e4c: 00 00 add %al,(%rax)560 3e4e: 00 00 add %al,(%rax)561 3e50: 00 10 add %dl,(%rax)562 3e52: 00 00 add %al,(%rax)563 3e54: 00 00 add %al,(%rax)564 3e56: 00 00 add %al,(%rax)565 3e58: 0d 00 00 00 00 or $0x0,%eax566 3e5d: 00 00 add %al,(%rax)567 3e5f: 00 a8 11 00 00 00 add %ch,0x11(%rax)568 3e65: 00 00 add %al,(%rax)569 3e67: 00 19 add %bl,(%rcx)570 3e69: 00 00 add %al,(%rax)571 3e6b: 00 00 add %al,(%rax)572 3e6d: 00 00 add %al,(%rax)573 3e6f: 00 28 add %ch,(%rax)574 3e71: 3e 00 00 add %al,%ds:(%rax)575 3e74: 00 00 add %al,(%rax)576 3e76: 00 00 add %al,(%rax)577 3e78: 1b 00 sbb (%rax),%eax578 3e7a: 00 00 add %al,(%rax)579 3e7c: 00 00 add %al,(%rax)580 3e7e: 00 00 add %al,(%rax)581 3e80: 08 00 or %al,(%rax)582 3e82: 00 00 add %al,(%rax)583 3e84: 00 00 add %al,(%rax)584 3e86: 00 00 add %al,(%rax)585 3e88: 1a 00 sbb (%rax),%al586 3e8a: 00 00 add %al,(%rax)587 3e8c: 00 00 add %al,(%rax)588 3e8e: 00 00 add %al,(%rax)589 3e90: 30 3e xor %bh,(%rsi)590 3e92: 00 00 add %al,(%rax)591 3e94: 00 00 add %al,(%rax)592 3e96: 00 00 add %al,(%rax)593 3e98: 1c 00 sbb $0x0,%al594 3e9a: 00 00 add %al,(%rax)595 3e9c: 00 00 add %al,(%rax)596 3e9e: 00 00 add %al,(%rax)597 3ea0: 08 00 or %al,(%rax)598 3ea2: 00 00 add %al,(%rax)599 3ea4: 00 00 add %al,(%rax)600 3ea6: 00 00 add %al,(%rax)601 3ea8: f5 cmc602 3ea9: fe (bad)603 3eaa: ff 6f 00 ljmp *0x0(%rdi)604 3ead: 00 00 add %al,(%rax)605 3eaf: 00 08 add %cl,(%rax)606 3eb1: 03 00 add (%rax),%eax607 3eb3: 00 00 add %al,(%rax)608 3eb5: 00 00 add %al,(%rax)609 3eb7: 00 05 00 00 00 00 add %al,0x0(%rip) # 3ebd 0x85>

610 3ebd: 00 00 add %al,(%rax)611 3ebf: 00 b8 03 00 00 00 add %bh,0x3(%rax)612 3ec5: 00 00 add %al,(%rax)613 3ec7: 00 06 add %al,(%rsi)614 3ec9: 00 00 add %al,(%rax)615 3ecb: 00 00 add %al,(%rax)616 3ecd: 00 00 add %al,(%rax)617 3ecf: 00 28 add %ch,(%rax)618 3ed1: 03 00 add (%rax),%eax619 3ed3: 00 00 add %al,(%rax)620 3ed5: 00 00 add %al,(%rax)621 3ed7: 00 0a add %cl,(%rdx)622 3ed9: 00 00 add %al,(%rax)623 3edb: 00 00 add %al,(%rax)624 3edd: 00 00 add %al,(%rax)625 3edf: 00 7d 00 add %bh,0x0(%rbp)626 3ee2: 00 00 add %al,(%rax)627 3ee4: 00 00 add %al,(%rax)628 3ee6: 00 00 add %al,(%rax)629 3ee8: 0b 00 or (%rax),%eax630 3eea: 00 00 add %al,(%rax)631 3eec: 00 00 add %al,(%rax)632 3eee: 00 00 add %al,(%rax)633 3ef0: 18 00 sbb %al,(%rax)634 3ef2: 00 00 add %al,(%rax)635 3ef4: 00 00 add %al,(%rax)636 3ef6: 00 00 add %al,(%rax)637 3ef8: 15 00 00 00 00 adc $0x0,%eax638 ...639 3f05: 00 00 add %al,(%rax)640 3f07: 00 07 add %al,(%rdi)641 3f09: 00 00 add %al,(%rax)642 3f0b: 00 00 add %al,(%rax)643 3f0d: 00 00 add %al,(%rax)644 3f0f: 00 68 04 add %ch,0x4(%rax)645 3f12: 00 00 add %al,(%rax)646 3f14: 00 00 add %al,(%rax)647 3f16: 00 00 add %al,(%rax)648 3f18: 08 00 or %al,(%rax)649 3f1a: 00 00 add %al,(%rax)650 3f1c: 00 00 add %al,(%rax)651 3f1e: 00 00 add %al,(%rax)652 3f20: c0 00 00 rolb $0x0,(%rax)653 3f23: 00 00 add %al,(%rax)654 3f25: 00 00 add %al,(%rax)655 3f27: 00 09 add %cl,(%rcx)656 3f29: 00 00 add %al,(%rax)657 3f2b: 00 00 add %al,(%rax)658 3f2d: 00 00 add %al,(%rax)659 3f2f: 00 18 add %bl,(%rax)660 3f31: 00 00 add %al,(%rax)661 3f33: 00 00 add %al,(%rax)662 3f35: 00 00 add %al,(%rax)663 3f37: 00 fb add %bh,%bl664 3f39: ff (bad)665 3f3a: ff 6f 00 ljmp *0x0(%rdi)666 3f3d: 00 00 add %al,(%rax)667 3f3f: 00 00 add %al,(%rax)668 3f41: 00 00 add %al,(%rax)669 3f43: 08 00 or %al,(%rax)670 3f45: 00 00 add %al,(%rax)671 3f47: 00 fe add %bh,%dh672 3f49: ff (bad)673 3f4a: ff 6f 00 ljmp *0x0(%rdi)674 3f4d: 00 00 add %al,(%rax)675 3f4f: 00 48 04 add %cl,0x4(%rax)676 3f52: 00 00 add %al,(%rax)677 3f54: 00 00 add %al,(%rax)678 3f56: 00 00 add %al,(%rax)679 3f58: ff (bad)680 3f59: ff (bad)681 3f5a: ff 6f 00 ljmp *0x0(%rdi)682 3f5d: 00 00 add %al,(%rax)683 3f5f: 00 01 add %al,(%rcx)684 3f61: 00 00 add %al,(%rax)685 3f63: 00 00 add %al,(%rax)686 3f65: 00 00 add %al,(%rax)687 3f67: 00 f0 add %dh,%al688 3f69: ff (bad)689 3f6a: ff 6f 00 ljmp *0x0(%rdi)690 3f6d: 00 00 add %al,(%rax)691 3f6f: 00 36 add %dh,(%rsi)692 3f71: 04 00 add $0x0,%al693 3f73: 00 00 add %al,(%rax)694 3f75: 00 00 add %al,(%rax)695 3f77: 00 f9 add %bh,%cl696 3f79: ff (bad)697 3f7a: ff 6f 00 ljmp *0x0(%rdi)698 3f7d: 00 00 add %al,(%rax)699 3f7f: 00 03 add %al,(%rbx)700 ...701

702 Disassembly of section .got:703

704 0000000000003fd8 :705 ...706

707 Disassembly of section .got.plt:708

709 0000000000004000 :710 4000: 38 3e cmp %bh,(%rsi)711 ...712

713 Disassembly of section .data:714

715 0000000000004018 :716 ...717

718 0000000000004020 :719 4020: 20 40 00 and %al,0x0(%rax)720 4023: 00 00 add %al,(%rax)721 4025: 00 00 add %al,(%rax)722 ...723

724 Disassembly of section .bss:725

726 0000000000004028 :727 ...728

729 Disassembly of section .comment:730

731 0000000000000000 :732 0: 47rex.RXB733 1: 43rex.XB734 2: 43 3a 20 rex.XB cmp (%r8),%spl735 5: 28 47 4e sub %al,0x4e(%rdi)736 8: 55 push %rbp737 9: 29 20 sub %esp,(%rax)738 b: 39 2e cmp %ebp,(%rsi)739 d: 32 2e xor (%rsi),%ch740 f: 30 00 xor %al,(%rax)

代码看着近750行,但是实际有用的行数并不多。

1 0000000000001119 :2 1119: 55 push %rbp3 111a: 48 89 e5 mov %rsp,%rbp4 111d: 89 7d fc mov %edi,-0x4(%rbp)5 1120: 48 89 75 f0 mov %rsi,-0x10(%rbp)6 1124: b8 01 00 00 00 mov $0x1,%eax7 1129: 5d pop %rbp8 112a: c3 retq9 112b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1)

只有大约这10行才是实现了返回值为1的情况,其他都是类似的。

其实还要说下字节序的问题,大端模式还是小端模式。

参考文档:https://www.cnblogs.com/guocai/archive/2012/10/18/2730048.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值