Tout d'abord, comment importer le module.
howToImport.py
from ctypes import *
Ensuite, comment utiliser les liens dynamiques et les fonctions de la bibliothèque C.
howToLoadLib.py
msvcrt=CDLL("C\\WINDOWS\\System32\\msvcrt.dll")
str="On Python!!"
msvcrt.printf("Hello World : %s",str)
À propos, il existe plusieurs méthodes de liaison dynamique, telles que CDLL (), windll (), oledll, etc. Je suis un débutant complet, donc c'est un peu déroutant, mais peut-être que je vais l'utiliser correctement en fonction de l'OS ...?
En passant, les fonctions d'entrée telles que gets () peuvent également être utilisées normalement. Aussi, pour les liens dynamiques,
howToLoad_2.py
msvcrt=cdll.msvcrt
Mais il semble que cela puisse être fait. (Je me demande si c'est plus courant ...?)
Je ne sais pas cela en détail non plus, mais peut-être que cela peut être utilisé s'il dépend de l'environnement et se trouve dans le répertoire standard de la bibliothèque ...? Vous pouvez le faire normalement sans écrire ici un chemin absolu.
En Python, vous n'avez généralement pas besoin de spécifier un type pour une variable, mais en C, vous devez spécifier un type pour une variable. Et comme il n'y a pas de types de langage C en Python, ctypes les a fournis pour vous! Par exemple
howToHensu.py
str=c_char_p("AAA")
hensu.c
char *str="AAA"
Deux programmes comme celui-ci sont probablement les mêmes. Je ne connais pas les détails, mais peut-être que ce que je fais est le même. Ceci n'est qu'un exemple, et il y en a beaucoup comme char, int, short, long, double, float, void * et ainsi de suite.
Au fait, si vous voulez passer par référence en langage C, utilisez une méthode appelée byref (). Par exemple, si vous souhaitez passer un pointeur vers un argument de fonction, vous pouvez l'utiliser comme myfunc (byref (pointer)). Dans ce cas, le pointeur n'est qu'une variable.
Vous pouvez également utiliser des structures et des communautés ainsi que des variables.
howToStruct.py
class Test(Structure):
_fields_=[
("testInt",c_int),
("testChar",c_char),
]
Vous pouvez également créer une structure comme celle-ci. (Je vais omettre le corps commun car je n'ai pas assez étudié et je ne sais pas encore comment m'en servir)
Au fait, j'ai acheté un livre intitulé "Reverse Engineering-Binary Analysis Techniques with Python-" et j'ai commencé à lire cette histoire, alors je l'ai écrite. Je viens de commencer à lire, alors j'aimerais le télécharger à nouveau si je lis un peu plus! URL: Technique d'analyse binaire-ingénierie inverse avec Python-
Au fait, c'est la première fois pour Qiita, alors j'espère que vous pourrez le voir avec des yeux chaleureux. Je suis un lycéen débutant complet, il serait donc très utile que vous puissiez signaler les erreurs!
Recommended Posts