Zunächst, wie man das Modul importiert.
howToImport.py
from ctypes import *
Weiter, wie man dynamische Links und Funktionen der C-Bibliothek verwendet.
howToLoadLib.py
msvcrt=CDLL("C\\WINDOWS\\System32\\msvcrt.dll")
str="On Python!!"
msvcrt.printf("Hello World : %s",str)
Übrigens gibt es verschiedene dynamische Verknüpfungsmethoden wie CDLL (), windll (), oledll usw. Ich bin ein absoluter Anfänger, daher ist es etwas verwirrend, aber vielleicht verwende ich es je nach Betriebssystem richtig ...?
Eingabefunktionen wie get () können übrigens auch normal verwendet werden. Auch für dynamische Links,
howToLoad_2.py
msvcrt=cdll.msvcrt
Aber es scheint, dass es getan werden kann. (Ich frage mich, ob dies häufiger vorkommt ...?)
Ich weiß das auch nicht im Detail, aber vielleicht kann es verwendet werden, wenn es umgebungsabhängig ist und sich im Standardbibliotheksverzeichnis befindet ...? Sie können dies normal tun, ohne hier einen absoluten Pfad zu schreiben.
In Python müssen Sie im Allgemeinen keinen Typ für eine Variable angeben, in C müssen Sie jedoch einen Typ für eine Variable angeben. Und da es in Python keine C-Sprachtypen gibt, hat ctypes sie für Sie bereitgestellt! Zum Beispiel
howToHensu.py
str=c_char_p("AAA")
hensu.c
char *str="AAA"
Zwei Programme wie dieses sind wahrscheinlich gleich. Ich kenne die Details nicht, aber vielleicht ist das, was ich tue, dasselbe. Dies ist nur ein Beispiel, und es gibt viele wie char, int, short, long, double, float, void * und so weiter.
Übrigens, wenn Sie als Referenz in C-Sprache übergeben möchten, verwenden Sie eine Methode namens byref (). Wenn Sie beispielsweise einen Zeiger auf ein Funktionsargument übergeben möchten, können Sie ihn wie myfunc (byref (Zeiger)) verwenden. In diesem Fall ist der Zeiger nur eine Variable.
Sie können auch Strukturen und Kommunalitäten sowie Variablen verwenden.
howToStruct.py
class Test(Structure):
_fields_=[
("testInt",c_int),
("testChar",c_char),
]
Sie können auch eine solche Struktur erstellen. (Ich werde den gemeinsamen Körper weglassen, weil ich nicht genug gelernt habe und noch nicht weiß, wie ich ihn verwenden soll.)
Übrigens kaufte ich ein Buch mit dem Titel "Reverse Engineering - Binäre Analysetechniken mit Python-" und fing an, diese Geschichte zu lesen, also schrieb ich sie. Ich habe gerade angefangen zu lesen, also würde ich es gerne wieder hochladen, wenn ich etwas mehr lese! URL: Reverse Engineering-Binäranalysetechnik mit Python-
Übrigens ist dies das erste Mal, dass Qiita es tut, also hoffe ich, dass Sie es mit warmen Augen sehen können ... w Ich bin ein absoluter Anfänger, daher wäre es sehr hilfreich, wenn Sie auf Fehler hinweisen könnten!
Recommended Posts