from ctypes import*
from my_debugger_defines import*
kernel32 = windll.kernel32
class debugger():
def __init__(self):
pass
def load(self,path_to_exe):
#dwCreationFlagsにより
#プロセスをどのように生成するかが決まる
creation_flags =DEBUG_PROCESS
#構造体をインスタンス化
startupinfo = STARTUPINFO()
process_information = PROCESS_INFORMATION()
#次の2つのおぷしょんにより、起動されたプロセスは
#別ウィンドウとして表示される
#STARTUPINFO構造体における設定がデバッグ対象に
#影響を及ぼす例でもある 何言ってるかさっぱりw
startupinfo.dwFlags = 0x1
startupinfo.wShowWindw = 0x0
#STARTUPINFO構造体のサイズを表示する変数cbを初期化
startupinfo.cb = sizeof(startupinfo)
if kernel32.CreateProcessA(path_to_exe),
None,
None,
None,
None,
creation_flags,
None,
None,
byref(startupinfo),
byref(process_information)):
print "[*] We have successfully launched the process!"
print "[*] PID: %d " % process_information.dwProcessId
else:
print "[*] Error: 0x%08x. " kernel32.GetLastError()
ZnJvbSBjdHlwZXMgaW1wb3J0Kgpmcm9tIG15X2RlYnVnZ2VyX2RlZmluZXMgaW1wb3J0KgoKa2VybmVsMzIgPSB3aW5kbGwua2VybmVsMzIKCmNsYXNzIGRlYnVnZ2VyKCk6CglkZWYgX19pbml0X18oc2VsZik6CgkJcGFzcwoJZGVmIGxvYWQoc2VsZixwYXRoX3RvX2V4ZSk6CgkgI2R3Q3JlYXRpb25GbGFnc+OBq+OCiOOCigoJICPjg5fjg63jgrvjgrnjgpLjganjga7jgojjgYbjgavnlJ/miJDjgZnjgovjgYvjgYzmsbrjgb7jgosKCSBjcmVhdGlvbl9mbGFncyA9REVCVUdfUFJPQ0VTUwoJIAoJICPmp4vpgKDkvZPjgpLjgqTjg7Pjgrnjgr/jg7PjgrnljJYKCSBzdGFydHVwaW5mbyA9IFNUQVJUVVBJTkZPKCkKCSBwcm9jZXNzX2luZm9ybWF0aW9uID0gUFJPQ0VTU19JTkZPUk1BVElPTigpCgkgCgkgI+asoeOBru+8kuOBpOOBruOBiuOBt+OBl+OCh+OCk+OBq+OCiOOCiuOAgei1t+WLleOBleOCjOOBn+ODl+ODreOCu+OCueOBrwoJICPliKXjgqbjgqPjg7Pjg4njgqbjgajjgZfjgabooajnpLrjgZXjgozjgosKCSAjU1RBUlRVUElORk/mp4vpgKDkvZPjgavjgYrjgZHjgovoqK3lrprjgYzjg4fjg5Djg4PjgrDlr77osaHjgasKCSAj5b2x6Z+/44KS5Y+K44G844GZ5L6L44Gn44KC44GC44KL44CA5L2V6KiA44Gj44Gm44KL44GL44GV44Gj44Gx44KKdwoJIHN0YXJ0dXBpbmZvLmR3RmxhZ3MgPSAweDEKCSBzdGFydHVwaW5mby53U2hvd1dpbmR3ID0gMHgwCgkgCgkgI1NUQVJUVVBJTkZP5qeL6YCg5L2T44Gu44K144Kk44K644KS6KGo56S644GZ44KL5aSJ5pWwY2LjgpLliJ3mnJ/ljJYKCSBzdGFydHVwaW5mby5jYiA9IHNpemVvZihzdGFydHVwaW5mbykKCSAKCSBpZiBrZXJuZWwzMi5DcmVhdGVQcm9jZXNzQShwYXRoX3RvX2V4ZSksIAoJIAlOb25lLAoJIAlOb25lLAoJIAlOb25lLAoJIAlOb25lLAoJIAljcmVhdGlvbl9mbGFncywKCSAJTm9uZSwKCSAJTm9uZSwKCSAJYnlyZWYoc3RhcnR1cGluZm8pLAoJIAlieXJlZihwcm9jZXNzX2luZm9ybWF0aW9uKSk6CgkgIHByaW50ICJbKl0gV2UgaGF2ZSBzdWNjZXNzZnVsbHkgbGF1bmNoZWQgdGhlIHByb2Nlc3MhIgoJICBwcmludCAiWypdIFBJRDogJWQgIiAlIHByb2Nlc3NfaW5mb3JtYXRpb24uZHdQcm9jZXNzSWQKCWVsc2U6CglwcmludCAgIlsqXSBFcnJvcjogMHglMDh4LiAiIGtlcm5lbDMyLkdldExhc3RFcnJvcigpCgkKCQ==