injection de dll en python

Déclencheur

Il y avait un article sur l'injection de DLL en langage c, j'ai donc essayé de créer quelque chose qui puisse être exécuté par python en fonction de celui-ci.

http://inaz2.hatenablog.com/entry/2015/08/08/223643

Déjà là

Ici https://github.com/psychomario/pyinject

Essayez d'utiliser

environnement

windows7 pro service pack 1 (64bit) python2.7 notepad(64bit) gcc 4.8.3

dir dllInjection
dllinject.py//DL de git
use.py//Créé ci-dessous
spy.dll//Expliqué plus tard

spy.dll Détourné de cet article http://inaz2.hatenablog.com/entry/2015/08/08/223643

spy.c


#include <windows.h>
#pragma comment(lib, "user32")

BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
	char filename[MAX_PATH];
	switch (fdwReason) {
		case DLL_PROCESS_ATTACH:
			GetModuleFileName(NULL, filename, sizeof(filename));
			MessageBox(NULL, filename, "Hello from", MB_SYSTEMMODAL);
			break;
	}
	return TRUE;
}

Créez cette DLL.

gcc -c spy.c //spy.o
gcc -shared -o spy.dll spy.o //spy.dll

use.py Ensuite, écrivez le code pour utiliser dllinject.py téléchargé depuis git. (Un niveau qui peut être console ...)

use.py


import sys
import dllinject
pid = int(sys.argv[1])
proc=dllinject.Process(pid=pid)
proc.inject("C:\\Users\\'hoge'\\Desktop\\dllInjection\\spy.dll")
proc.terminate()

Courir

>C:¥Windows¥notepad.exe
>tasklist
...
notepad.exe  1988 Console  1  9,384K
...
>python use.py 1988

cmd.png

result.png

point important

Afin d'établir l'injection de DLL, il ne peut être établi que si le processus de démarrage et le type de DLL correspondent. Dans mon environnement, wow64 + dll 32 bits ne fonctionnait pas non plus. http://furuya02.hatenablog.com/entry/20120114/1326484897

processus Type de DLL résultat
32bit 32bit
32bit 64bit ERROR_BAD_EXE_FORMAT
64bit 32bit ERROR_BAD_EXE_FORMAT
64bit 64bit

Recommended Posts

injection de dll en python
DI (injection de dépendances) en Python
Quadtree en Python --2
Python en optimisation
CURL en Python
Métaprogrammation avec Python
Python 3.3 avec Anaconda
SendKeys en Python
Méta-analyse en Python
Unittest en Python
Époque en Python
Discord en Python
Allemand en Python
DCI en Python
tri rapide en python
nCr en python
N-Gram en Python
Programmation avec Python
Plink en Python
Constante en Python
FizzBuzz en Python
Sqlite en Python
Étape AIC en Python
LINE-Bot [0] en Python
CSV en Python
Assemblage inversé avec Python
Réflexion en Python
Constante en Python
nCr en Python.
format en python
Scons en Python 3
Puyopuyo en python
python dans virtualenv
PPAP en Python
Quad-tree en Python
Réflexion en Python
Chimie avec Python
Hashable en Python
DirectLiNGAM en Python
LiNGAM en Python
Aplatir en Python
Aplatir en python
[Python] [Windows] Communication série en Python à l'aide de DLL
Liste triée en Python
AtCoder # 36 quotidien avec Python
Texte de cluster en Python
AtCoder # 2 tous les jours avec Python
Daily AtCoder # 32 en Python
Daily AtCoder # 6 en Python
Daily AtCoder # 18 en Python
Modifier les polices en Python
Motif singleton en Python
Opérations sur les fichiers en Python
Lire DXF avec python
Daily AtCoder # 53 en Python
Séquence de touches en Python
Utilisez config.ini avec Python
Daily AtCoder # 33 en Python