Hey, Aujourd'hui, j'ai essayé de faire une différence binaire de NDIS.sys, et j'ai remarqué quelque chose de bizarre. J'ai pris une fonction et j'ai commencé à la différencier. Les 30 premiers octets étaient les mêmes sur le disque (en utilisant IDA) et sur la mémoire (en utilisant WinDbg). Ensuite, quelque chose a changé. J'ai vu quelque chose comme "jmp _ imp _XXXXX". les octets JMP étaient les mêmes, mais l'adresse était différente. Ma question est: qu'est-ce qui fait la différence? Je pense que cela a quelque chose à voir avec les délocalisations. Bien que le saut soit adressé dans le même module, c'est un saut en longueur, ce qui le rend relativement à l'adresse de base du module. Si une relocalisation a lieu, elle doit également déplacer cette adresse, même si elle se trouve sur le même module.Quelles sont les causes des différences entre un pilote sur le disque et un pilote mappé en mémoire?
Ai-je tort ou raison? :-) Merci.
Notez que pour les pilotes de périphérique, l'adresse de base préférée est entièrement ignorée – snoone
Yup, mais - pourquoi le saut a dû être rebasé? La destination du saut se trouve dans le même module. – MindBlower
Pouvez-vous montrer ce que vous voyez dans le débogueur? – snoone