導航:首頁 > 編程語言 > python字元串指向一個地址

python字元串指向一個地址

發布時間:2023-08-31 06:19:20

python怎麼修改某個內存地址的數據

使用ctypes模塊調用WriteProcessMemory函數,在創建程序進程後,就可以修改該程序指定內存地址。WriteProcessMemory的函數原型如下所示。

BOOL WriteProcessMemory(

HANDLE hProcess,

LPVOID lpBaseAddress,

LPCVOID lpBuffer,

SIZE_T nSize,

SIZE_T* lpNumberOfBytesWritten

);

其參數含義如下。

· hProcess:要寫內存的進程句柄。

· lpBaseAddress:要寫的內存起始地址。

· lpBuffer:寫入值的地址。

· nSize:寫入值的大小。

· lpNumberOfBytesWritten :實際寫入的大小。

python代碼示例如下:

fromctypesimport*
#定義_PROCESS_INFORMATION結構體
class_PROCESS_INFORMATION(Structure):
_fields_=[('hProcess',c_void_p),
('hThread',c_void_p),
('dwProcessId',c_ulong),
('dwThreadId',c_ulong)]
#定義_STARTUPINFO結構體
class_STARTUPINFO(Structure):
_fields_=[('cb',c_ulong),
('lpReserved',c_char_p),
('lpDesktop',c_char_p),
('lpTitle',c_char_p),
('dwX',c_ulong),
('dwY',c_ulong),
('dwXSize',c_ulong),
('dwYSize',c_ulong),
('dwXCountChars',c_ulong),
('dwYCountChars',c_ulong),
('dwFillAttribute',c_ulong),
('dwFlags',c_ulong),
('wShowWindow',c_ushort),
('cbReserved2',c_ushort),
('lpReserved2',c_char_p),
('hStdInput',c_ulong),
('hStdOutput',c_ulong),
('hStdError',c_ulong)]
NORMAL_PRIORITY_CLASS=0x00000020#定義NORMAL_PRIORITY_CLASS
kernel32=windll.LoadLibrary("kernel32.dll")#載入kernel32.dll
CreateProcess=kernel32.CreateProcessA#獲得CreateProcess函數地址
ReadProcessMemory=kernel32.ReadProcessMemory#獲得ReadProcessMemory函數地址
WriteProcessMemory=kernel32.WriteProcessMemory#獲得WriteProcessMemory函數地址
TerminateProcess=kernel32.TerminateProcess
#聲明結構體
ProcessInfo=_PROCESS_INFORMATION()
StartupInfo=_STARTUPINFO()
file='ModifyMe.exe'#要進行修改的文件
address=0x0040103c#要修改的內存地址
buffer=c_char_p("_")#緩沖區地址
bytesRead=c_ulong(0)#讀入的位元組數
bufferSize=len(buffer.value)#緩沖區大小
#創建進程
ifCreateProcess(file,0,0,0,0,NORMAL_PRIORITY_CLASS,0,0,byref(StartupInfo),byref(ProcessInfo)):
#讀取要修改的內存地址,以判斷是否是要修改的文件
ifReadProcessMemory(ProcessInfo.hProcess,address,buffer,bufferSize,byref(bytesRead)):
ifbuffer.value=='x74':
buffer.value='x75'#修改緩沖區內的值,將其寫入內存
#修改內存
ifWriteProcessMemory(ProcessInfo.hProcess,address,buffer,bufferSize,byref(bytesRead)):
print'成功改寫內存!'
else:
print'寫內存錯誤!'
else:
print'打開了錯誤的文件!'
TerminateProcess(ProcessInfo.hProcess,0)#如果不是要修改的文件,則終止進程
else:
print'讀內存錯誤!'
else:
print'不能創建進程!'

⑵ python怎麼提取一個字元串中指定位置的內容注意:位數不是常數是一個變數

str改成int就可以了,下標是整數,你是要把字元串轉整數

⑶ 用python寫個函數,實現在字元串A中找出字元串B的位置 比如:let life be beau

用string 自己的方法就可以

>>> s = 'let life be beautiful like summer flowers'
>>> s.find('like')
22

⑷ 如下一串字元串,用python怎樣提取其中的url,並放到列表中

re.findall(r'https?:[a-zA-Z./d]+',url)

閱讀全文

與python字元串指向一個地址相關的資料

熱點內容
36位單片機 瀏覽:428
英雄聯盟山東伺服器地址 瀏覽:212
sd伺服器什麼意思 瀏覽:617
thinkphp去indexphp 瀏覽:62
電腦顯示連接未加密 瀏覽:193
zao伺服器怎麼修改 瀏覽:244
php使用jsapi調起支付 瀏覽:891
vivo雲伺服器網 瀏覽:722
cmd遠程連接命令行 瀏覽:961
黑馬python講義 瀏覽:133
php高並發測試 瀏覽:88
第二屆程序員節開幕式 瀏覽:84
運維程序員腳本 瀏覽:371
塑源碼燕窩的安全性 瀏覽:176
作業調度採用高響應比優先調度演算法 瀏覽:160
和平精英如何切換蘋果到安卓 瀏覽:532
資料庫調用表單的命令 瀏覽:923
程序員技能大賽 瀏覽:11
什麼app買品牌衣服 瀏覽:15
手機看世界名著哪個app好 瀏覽:495