2011-03-23 2 views

Répondre

0

je pense que ce pourrait être aussi simple que cela:

recompiler le noyau avec des symboles de débogage, ou si vous utilisez la version de votre distro, prenez le package de débogage. Ensuite, exécutez gdb vmlinux et tapez disas <function name> si vous voulez regarder une fonction C. Sauf que system_call n'est pas une fonction C, donc GDB ne le recherchera pas de la même manière. Mais vous pouvez toujours démonter:

(gdb) info addr system_call 
Symbol "system_call" is at 0xc0403964 in a file compiled without debugging. 
(gdb) x/4i 0xc0403964 
    0xc0403964: push %eax 
    0xc0403965: cld  
    0xc0403966: push %fs 
    0xc0403968: push %es 
+0

Qu'est-ce que 'system_call' s'il ne s'agit pas d'une fonction C? – assem

+0

@assem: C'est juste un symbole de lien qui se résout à l'adresse d'un code d'assemblage. Vous pouvez voir sa définition [ici] (http://lxr.linux.no/linux+v2.6.37.5/arch/x86/kernel/entry_32.S#L496). – Karmastan

0

Vous n'auriez pas vraiment besoin de décompiler quelque chose depuis son linux. Vous pouvez juste regarder la source. Un bon navigateur de source est LXR. Rejoignez la liste de diffusion du noyau si vous avez besoin d'aide, ce sont des gens très sympathiques.

+0

Je veux l'obtenir par decompiler, pas à partir de la liste de diffusion ... – assem