Comment utiliser la bibliothèque C en Python

À propos du module ctypes de Python

1. Comment utiliser les ctypes

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.

2. Les types C peuvent être utilisés avec les ctypes!

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)

référence

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

Comment utiliser la bibliothèque C en Python
Comment utiliser la bibliothèque d'images Python dans la série python3
Comment utiliser les requêtes (bibliothèque Python)
Comment utiliser SQLite en Python
Comment utiliser Mysql avec python
Comment envelopper C en Python
Comment utiliser ChemSpider en Python
Comment utiliser PubChem avec Python
[Python] Comment utiliser la bibliothèque de création de graphes Altair
Comment utiliser le modèle appris dans Lobe en Python
[Introduction à Python] Comment utiliser la classe en Python?
Comment déboguer une bibliothèque Python standard dans Visual Studio
[python] Comment utiliser Matplotlib, une bibliothèque pour dessiner des graphiques
Comment utiliser la méthode __call__ dans la classe Python
Comment utiliser Google Test en langage C
Comment utiliser __slots__ dans la classe Python
Remarques sur l'utilisation de la guimauve dans la bibliothèque de schémas
Comment utiliser les expressions régulières en Python
Comment utiliser is et == en Python
Comment utiliser l'astérisque (*) en Python. C'est peut-être tout? ..
[Introduction à Python] Comment utiliser l'opérateur in dans l'instruction for?
[Note du débutant] Comment spécifier le chemin de lecture de la bibliothèque en Python
Comment générer une séquence en Python et C ++
Comment utiliser la bibliothèque de dessins graphiques Bokeh
Résumé de l'utilisation de MNIST avec Python
[Algorithm x Python] Comment utiliser la liste
Comment obtenir les fichiers dans le dossier [Python]
Comment utiliser tkinter avec python dans pyenv
Utilisez l'application LibreOffice en Python (3) Ajouter une bibliothèque
python3: Comment utiliser la bouteille (2)
Comment utiliser le générateur
[Python] Comment utiliser la liste 1
Comment utiliser Python Argparse
Python: comment utiliser pydub
[Python] Comment utiliser checkio
Comment développer en Python
[Python] Comment utiliser input ()
Comment utiliser le décorateur
Comment utiliser Python lambda
[Python] Comment utiliser virtualenv
python3: Comment utiliser la bouteille (3)
python3: Comment utiliser la bouteille
Comment utiliser les octets Python
Comment récupérer la nième plus grande valeur en Python
[Pour les débutants] Comment utiliser la commande say avec python!
Comment obtenir le nom de la variable lui-même en python
Comment obtenir le nombre de chiffres en Python
Comment connaître le répertoire actuel en Python dans Blender
Comment utiliser Raspeye Relay Module Python
Je voulais utiliser la bibliothèque Python de MATLAB
Comment utiliser la clause exist dans l'ensemble de requêtes Django
[Introduction à Udemy Python3 + Application] 27. Comment utiliser le dictionnaire
J'ai essayé de résumer comment utiliser les pandas de python
[Introduction à Udemy Python3 + Application] 30. Comment utiliser l'ensemble
Comment utiliser la bibliothèque de solveurs "kociemba" de Rubik Cube
[Python] Comment afficher les valeurs de liste dans l'ordre
Je veux utiliser le jeu de données R avec python
[Python] Comment faire PCA avec Python
Python: comment utiliser async avec
Comment utiliser la fonction zip