Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python索引器错误_Python_Input - Fatal编程技术网

Python索引器错误

Python索引器错误,python,input,Python,Input,当在空闲的“运行模块”中运行时,我得到下面的错误。我尝试了很多不同的方法,但似乎都不管用!我是Python新手,需要一些指导 print ("[+] usage: ./dll_injector.py <PID> <DLLPATH>") print ("\n") from ctypes import * import sys,ctypes import time # Define constants we use PAGE_RW_P

当在空闲的“运行模块”中运行时,我得到下面的错误。我尝试了很多不同的方法,但似乎都不管用!我是Python新手,需要一些指导

print ("[+] usage: ./dll_injector.py <PID> <DLLPATH>")
print ("\n")

from ctypes import *
import sys,ctypes
import time
# Define constants we use
PAGE_RW_PRIV = 0x04
PROCESS_ALL_ACCESS = 0x1F0FFF
VIRTUAL_MEM = 0x3000

#CTYPES handler
kernel32 = windll.kernel32

def dll_inject(PID,DLL_PATH):
print ("[+] Starting DLL Injector")
LEN_DLL = len(DLL_PATH)# get the length of the DLL PATH 
print ("\t[+] Getting process handle for PID:%d ") % PID 
hProcess = kernel32.OpenProcess(PROCESS_ALL_ACCESS,False,PID)
 
if hProcess == None:
    print ("\t[+] Unable to get process handle")
    sys.exit(0)
print ("\t[+] Allocating space for DLL PATH")
DLL_PATH_ADDR = kernel32.VirtualAllocEx(hProcess, 
                                        0,
                                        LEN_DLL,
                                        VIRTUAL_MEM,
                                        PAGE_RW_PRIV)
bool_Written = c_int(0)
print ("\t[+] Writing DLL PATH to current process space")
kernel32.WriteProcessMemory(hProcess,
                            DLL_PATH_ADDR,
                            DLL_PATH,
                            LEN_DLL,
                            byref(bool_Written))
print ("\t[+] Resolving Call Specific functions & libraries")
kernel32DllHandler_addr = kernel32.GetModuleHandleA("kernel32")
print ("\t\t[+] Resolved kernel32 library at 0x%08x") % kernel32DllHandler_addr
LoadLibraryA_func_addr = kernel32.GetProcAddress(kernel32DllHandler_addr,"LoadLibraryA")
print ("\t\t[+] Resolve LoadLibraryA function at 0x%08x") %LoadLibraryA_func_addr
 
thread_id = c_ulong(0) # for our thread id
print ("\t[+] Creating Remote Thread to load our DLL")
if not kernel32.CreateRemoteThread(hProcess,
                            None,
                            0,
                            LoadLibraryA_func_addr,
                            DLL_PATH_ADDR,
                            0,
                            byref(thread_id)):
    print ("Injection Failed, exiting")
    sys.exit(0)
else:
    print ("Remote Thread 0x%08x created, DLL code injected") % thread_id.value
PID = int(sys.argv[1])
DLL_PATH = str(sys.argv[2])
dll_inject(PID, DLL_PATH)
time.sleep(5)
import subprocess

filepath=os.path.dirname(os.path.realpath(pid.cmd))
p = subprocess.Popen(filepath, shell=True, stdout = subprocess.PIPE)

stdout, stderr = p.communicate()
print p.returncode # is 0 if success
打印(“[+]用法:./dll_injector.py”)
打印(“\n”)
从ctypes导入*
导入系统,ctypes
导入时间
#定义我们使用的常量
页码\u RW\u PRIV=0x04
进程\u所有\u访问=0x1F0FFF
虚拟内存=0x3000
#CTYPES处理程序
kernel32=windell.kernel32
def dll_注入(PID,dll_路径):
打印(“[+]启动DLL注入器”)
LEN_DLL=LEN(DLL_路径)#获取DLL路径的长度
打印(“\t[+]获取PID的进程句柄:%d”)%PID
hProcess=kernel32.OpenProcess(PROCESS\u ALL\u ACCESS,False,PID)
如果HPProcess==无:
打印(“\t[+]无法获取进程句柄”)
系统出口(0)
打印(“\t[+]为DLL路径分配空间”)
DLL\u PATH\u ADDR=kernel32.VirtualAllocEx(hProcess,
0,
LEN_DLL,
虚拟内存,
页码(RW_PRIV)
bool_writed=c_int(0)
打印(“\t[+]将DLL路径写入当前进程空间”)
内核32.WriteProcessMemory(hProcess,
DLL\u路径\u地址,
DLL_路径,
LEN_DLL,
byref(bool_书面)
打印(“\t[+]解析特定于调用的函数和库”)
kernel32DllHandler\u addr=kernel32.GetModuleHandleA(“kernel32”)
打印(“\t\t[+]在0x%08x处解析的内核32库”)%kernel32DllHandler\u addr
LoadLibraryA\u func\u addr=kernel32.GetProcAddress(kernel32DllHandler\u addr,“LoadLibraryA”)
打印(“\t\t[+]解析0x%08x处的LoadLibraryA函数”)%LoadLibraryA\u func\u addr
线程id=c_ulong(0)#用于我们的线程id
打印(“\t[+]创建远程线程以加载我们的DLL”)
如果不是kernel32.CreateRemoteThread(HPProcess,
没有一个
0,
加载库a_func_addr,
DLL\u路径\u地址,
0,
byref(线程id)):
打印(“注入失败,退出”)
系统出口(0)
其他:
打印(“创建了远程线程0x%08x,插入了DLL代码”)%Thread\u id.value
PID=int(sys.argv[1])
DLL_PATH=str(sys.argv[2])
dll\U注入(PID,dll\U路径)
时间。睡眠(5)
导入子流程
filepath=os.path.dirname(os.path.realpath(pid.cmd))
p=subprocess.Popen(文件路径,shell=True,stdout=subprocess.PIPE)
stdout,stderr=p.communicate()
打印p.returncode#如果成功,则为0
返回的错误如下所示

回溯(最近一次呼叫最后一次):
文件“dll.py”,第58行,在
PID=int(sys.argv[1])
索引器:列表索引超出范围`


此模块需要传递一些命令行参数,特别是PID作为第一个参数,DLL的路径作为第二个参数。这就是为什么
sys.argv[1]
会导致错误
sys.argv
存储程序参数,但没有传递任何参数,因此数组只有1个元素(脚本名称)

相反,打开命令提示符,输入该命令(用所需值替换
),然后按enter键:

“C:\Users\theman\Desktop\dll.py”
这将为脚本提供所需的参数

"C:\Users\The Man\Desktop\dll.py" <PID> <DLLPATH>