Il existe des moyens de le faire, comme la possibilité de reconnaître les modèles de mémoire autour de la chose que vous recherchez. Les crackers peuvent l'utiliser pour trouver des emplacements de mémoire à corriger, même avec un logiciel qui «bouge», pour ainsi dire (comme avec les systèmes d'exploitation qui fournissent la randomisation des espaces d'adressage). Par exemple, si vous savez qu'il existe toujours des chaînes de caractères fixes X
octets au-delà de la zone d'intérêt, vous pouvez analyser tout l'espace d'adressage pour les trouver, puis calculer la zone d'intérêt à partir de cela.
Cependant, ce n'est pas toujours aussi fiable qu'on pourrait le croire. Je voudrais plutôt penser à un autre moyen d'atteindre vos objectifs, qui ne consiste pas à lutter contre les fonctionnalités qui protègent un tel logiciel contre les comportements malveillants.
penser à des questions telles que:
Pourquoi faites-vous exactement besoin accès à l'espace d'adressage du tout? Le programme lui-même fournit-il des informations d'état d'une manière plus pratique?
Si le programme vous appartient, pouvez-vous le modifier pour fournir cette information?
Si vous avez seulement besoin de savoir si le programme fait son travail, pouvez-vous simplement "pinguer" le programme (par exemple, pour une page web, envoyer une requête HTML et vous assurer une réponse valide)? En dernier recours, pouvez-vous convaincre l'OS de charger votre programme sans randomisation de l'espace d'adressage, puis continuer à utiliser votre méthode (quelque peu douteuse)?
Compte tenu de votre commentaire que:
J'utilise le programme sur quatre machines et je dois « re-trouver » les adresses (8 d'entre eux) sur tous à chaque fois qu'ils sont mis à jour le programme.J'aurais simplement opté pour l'automatisation de ce processus.
C'est ce que fait un logiciel de craquage. Il analyse les fichiers ou le code en mémoire et les données à la recherche de marqueurs qu'il peut utiliser pour localiser une zone d'intérêt.
Si vous pouvez le faire manuellement, vous devriez être capable d'écrire un programme qui peut le faire. Avoir ce programme localiser les zones d'intérêt (en lisant l'espace d'adressage du processus) et, une fois qu'ils sont trouvés, il suffit de lire vos informations requises à partir de là. Si les méthodes pour les trouver changent avec chaque version (au lieu de seulement les emplacements réels), vous devrez probablement mettre à jour vos routines de localisation avec chaque version de leur logiciel mais, malheureusement, c'est le prix que vous payez pour la méthode choisie.
Il est peu probable que le programme que vous essayez de lire soit aussi sûr que certains - j'ai vu certains déplacer leurs centres d'intérêt comme le programme est exécutant, pour essayer de confondre les craquelins.
Pourquoi cela a-t-il été réduit? Je ne vois rien de mal à la question. –
@San Jacinto: parce que si vous essayez de faire cela, quelque chose ne va pas en premier lieu. –
Question d'upvoting. OP a indiqué dans un commentaire pourquoi cela est nécessaire et cela semble assez raisonnable. Le fait qu'il n'y ait pas d'autre moyen de faire quelque chose m'a souvent conduit à faire le «mauvais» truc plusieurs fois dans ma carrière :-) Mon travail consiste à fournir des solutions réalisables, propres et pures de cœur quand c'est possible, mais rapidement sale si nécessaire. Ma suggestion au downvoter serait de fournir la "bonne" façon de le faire dans une réponse plutôt que de dire aveuglément à quelqu'un qu'ils le font mal. – paxdiablo