**《python灰帽子》第4章
目標:獲取程序快照和恢復程序
思路:開啟兩個執行緒,第一線程建立乙個pydbg偵錯程式物件,並用它載入乙個可執行程式;第二線程通過pydbg的方法process_snapshot()和process_restore()來獲取程序快照和恢復,在獲取快照或恢復的時候都要暫停程序的所有執行緒
snapshot.py
from pydbg import *
from pydbg.defines import *
import threading
import time
import sys
class snapshotter(object):
def __init__(self,exe_path):
self.exe_path = exe_path
self.pid = none
self.dbg = none
self.running = true
# open debugger thread waiting for pid to be set
pydbg_thread = threading.thread(target=self.start_debugger)
pydbg_thread.setdaemon(0)
pydbg_thread.start()
while self.pid == none:
time.sleep(1)
# open second thread to snapshot the process
monitor_thread = threading.thread(target=self.monitor_debugger)
monitor_thread.setdaemon(0)
monitor_thread.start()
def monitor_debugger(self):
while self.running == true:
input = raw_input("enter: 'snap','restore' or 'quit'")
input = input.lower().strip()
if input == "quit":
print "[*] exiting the snapshotter."
self.running = false
self.dbg.terminate_process()
elif input == "snap":
print "[*] suspending all threads."
self.dbg.suspend_all_threads()
print "[*] obtaining snapshot."
self.dbg.process_snapshot()
print "[*] resuming operation."
self.dbg.resume_all_threads()
elif input == "restore":
print "[*] suspending all threads."
self.dbg.suspend_all_threads()
print "[*] restoring snapshot."
self.dbg.process_restore()
print "[*] resuming operation."
self.dbg.resume_all_threads()
def start_debugger(self):
self.dbg = pydbg()
pid = self.dbg.load(self.exe_path)
self.pid = self.dbg.pid
self.dbg.run()
exe_path = "c:/windows/system32/calc.exe"
snap = snapshotter(exe_path)
測試:
只在xp下可以成功,輸入restore後,計算器視窗並沒變化,要最小化後再開啟就可以看到效果
另外,對計算器記憶功能如ms的恢復不起作用
第三章 AWS快照建立例項啟動失敗排查解決
因業務需求,需要將生產環境的a例項複製乙份出來當做預生產環境使用。但是在aws使用快照的方式建立ec2例項的時候無法正常啟動,通過獲取aws ec2截圖能夠看到已經到了登入介面。在發現問題後嘗試使用ssm登入,但是卻無法登入進系統內部。後再停止例項執行,然後在執行例項,依然無法啟動。為了排查是vpc...
程序管理 三 程序的層次
在系統中,乙個程序建立了另外乙個程序後,父程序和子程序會以某種形式繼續保持一種聯絡。子程序可以建立更多的程序,進而組成乙個程序的層次結構。程序和它的所有子女和後裔程序共同組成乙個程序組。當使用者在從鍵盤發出乙個訊號的時候,該訊號會被送給當前鍵盤相關程序組中的成員,每個程序可以根據需要分別捕獲訊號 忽...
python 的介面測試例項
我們可以用jmeter做介面測試,但是呢個人覺得那個有點侷限性,用python就靈活很多,可以按自己的思路來構建比較靈活,下面給大家介紹乙個簡單的介面測試例項。一 我們的思路如下 首先我們要弄清楚我們的整個思路 1.先把我們的測試資料準備好,即post的資料 當然get方法也可以傳送請求資料 2.然...