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
Ici https://github.com/psychomario/pyinject
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()
>C:¥Windows¥notepad.exe
>tasklist
...
notepad.exe 1988 Console 1 9,384K
...
>python use.py 1988
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