码迷,mamicode.com
首页 > 其他好文 > 详细

__libc_csu_init函数的通用gadget

时间:2016-05-13 13:23:55      阅读:838      评论:0      收藏:0      [点我收藏+]

标签:

 1 .text:0000000000400840 ; =============== S U B R O U T I N E =======================================
 2 .text:0000000000400840
 3 .text:0000000000400840
 4 .text:0000000000400840                 public __libc_csu_init
 5 .text:0000000000400840 __libc_csu_init proc near               ; DATA XREF: _start+16o
 6 .text:0000000000400840                 push    r15
 7 .text:0000000000400842                 mov     r15d, edi
 8 .text:0000000000400845                 push    r14
 9 .text:0000000000400847                 mov     r14, rsi
10 .text:000000000040084A                 push    r13
11 .text:000000000040084C                 mov     r13, rdx
12 .text:000000000040084F                 push    r12
13 .text:0000000000400851                 lea     r12, __frame_dummy_init_array_entry
14 .text:0000000000400858                 push    rbp
15 .text:0000000000400859                 lea     rbp, __do_global_dtors_aux_fini_array_entry
16 .text:0000000000400860                 push    rbx
17 .text:0000000000400861                 sub     rbp, r12
18 .text:0000000000400864                 xor     ebx, ebx
19 .text:0000000000400866                 sar     rbp, 3
20 .text:000000000040086A                 sub     rsp, 8
21 .text:000000000040086E                 call    _init_proc
22 .text:0000000000400873                 test    rbp, rbp
23 .text:0000000000400876                 jz      short loc_400896
24 .text:0000000000400878                 nop     dword ptr [rax+rax+00000000h]
25 .text:0000000000400880
26 .text:0000000000400880 loc_400880:                             ; CODE XREF: __libc_csu_init+54j
27 .text:0000000000400880                 mov     rdx, r13
28 .text:0000000000400883                 mov     rsi, r14
29 .text:0000000000400886                 mov     edi, r15d
30 .text:0000000000400889                 call    qword ptr [r12+rbx*8]
31 .text:000000000040088D                 add     rbx, 1
32 .text:0000000000400891                 cmp     rbx, rbp
33 .text:0000000000400894                 jnz     short loc_400880
34 .text:0000000000400896
35 .text:0000000000400896 loc_400896:                             ; CODE XREF: __libc_csu_init+36j
36 .text:0000000000400896                 add     rsp, 8
37 .text:000000000040089A                 pop     rbx
38 .text:000000000040089B                 pop     rbp
39 .text:000000000040089C                 pop     r12
40 .text:000000000040089E                 pop     r13
41 .text:00000000004008A0                 pop     r14
42 .text:00000000004008A2                 pop     r15
43 .text:00000000004008A4                 retn
44 .text:00000000004008A4 __libc_csu_init endp
45 .text:00000000004008A4
46 .text:00000000004008A4 ; ---------------------------------------------------------------------------

 x64中的前六个参数依次保存在RDI, RSI, RDX, RCX, R8和 R9中

r13   =rdx=arg3

r14   =rsi=arg2

r15d=edi=arg1

r12= call address

__libc_csu_init函数的通用gadget

标签:

原文地址:http://www.cnblogs.com/Ox9A82/p/5487725.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!