<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
LyScript是一款x64dbg主動化操控外掛,經過Python操控X64dbg,完成了遠端動態偵錯,解決了逆向工作者剖析漏洞,尋覓指令片段,原生指令碼不行強壯的問題,經過與Python相結合使用Python語法的靈活性以及豐富的第三方庫,進步剖析功率,完成主動化剖析程式碼。
python包請裝置與外掛一致的版別,在cmd命令列下履行pip命令即可裝置。
裝置Python包:pipinstallLyScript32或者pipinstallLyScript64
其次你需求手動下載對應x64dbg版別的驅動檔案,並放入指定目錄下。
外掛下載好以後,請將該外掛複製到x64dbg目錄下的plugins目錄下,程式運轉後會主動載入外掛檔案。
當外掛載入成功後,會在紀錄檔方位看到具體的繫結資訊以及輸出偵錯,該外掛並不會在外掛欄顯示。
假如需求遠端偵錯,則只需求在初始化MyDebug()類是傳入對端IP地址即可,假如不填寫引數則預設使用127.0.0.1地址,請保證對端放行了6589埠,不然無法銜接。
運轉x64dbg程式並手動載入需求剖析的可履行檔案,然後我們能夠經過connect()方法銜接到偵錯程式,銜接後會建立一個持久對談直到python指令碼完畢則銜接會被強制斷開,在此期間可呼叫is_connect()檢視該連結是否還存在,具體程式碼如下所示。
fromLyScript32importMyDebugif__name__==」__main__」:#初始化dbg=MyDebug()#銜接到偵錯程式 connect_flag=dbg.connect()print(「銜接狀況:{}」.format(connect_flag))#檢測通訊端是否還在 ref=dbg.is_connect()print(「是否在銜接:」,ref)dbg.close()
LyScript外掛預設沒有批次載入功能,導致使用者只能手動將被偵錯程序拖入到x64dbg中才可以偵錯,使用python模擬快捷鍵即可解決這個問題,具體使用程式碼如下。
import win32api import win32gui, win32con import win32clipboard import re import time from LyScript32 import MyDebug class cWindow: def __init__(self): self._hwnd = None def SetAsForegroundWindow(self): win32gui.SetForegroundWindow(self._hwnd) def Maximize(self): # 最大化 win32gui.ShowWindow(self._hwnd, win32con.SW_MAXIMIZE) def _window_enum_callback(self, hwnd, regex): if self._hwnd is None and re.match(regex, str(win32gui.GetWindowText(hwnd))) is not None: self._hwnd = hwnd def find_window_regex(self, regex): self._hwnd = None win32gui.EnumWindows(self._window_enum_callback, regex) def hide_always_on_top_windows(self): win32gui.EnumWindows(self._window_enum_callback_hide, None) def _window_enum_callback_hide(self, hwnd, unused): if hwnd != self._hwnd: if win32gui.IsWindowVisible(hwnd) and win32gui.GetWindowLong(hwnd, win32con.GWL_EXSTYLE) & win32con.WS_EX_TOPMOST: className = win32gui.GetClassName(hwnd) if not (className == 'Button' or className == 'Shell_TrayWnd'): win32gui.ShowWindow(hwnd, win32con.SW_FORCEMINIMIZE) def OpenFile(self,path): # 按下F3 win32api.keybd_event(0x72, 0, 0, 0) win32api.keybd_event(0x72, 0, win32con.KEYEVENTF_KEYUP, 0) # 開啟剪貼簿 win32clipboard.OpenClipboard() # 清空剪貼簿 win32clipboard.EmptyClipboard() # 設定剪貼簿內容 win32clipboard.SetClipboardData(win32con.CF_UNICODETEXT, path) # 獲取剪貼簿內容 date = win32clipboard.GetClipboardData() print("[*] OpenFile = {}".format(date)) # 關閉剪貼簿 win32clipboard.CloseClipboard() time.sleep(0.2) # 按下ctrl+v win32api.keybd_event(0x11, 0, 0, 0) win32api.keybd_event(0x56, 0, 0, 0) win32api.keybd_event(0x56, 0, win32con.KEYEVENTF_KEYUP, 0) win32api.keybd_event(0x11, 0, win32con.KEYEVENTF_KEYUP, 0) # 按下回車 win32api.keybd_event(0x0D, 0, 0, 0) win32api.keybd_event(0x0D, 0, win32con.KEYEVENTF_KEYUP, 0) def deatch(self): # 按下Ctrl+Alt+F2 win32api.keybd_event(0x11, 0, 0, 0) win32api.keybd_event(0x12, 0, 0, 0) win32api.keybd_event(0x71, 0, 0, 0) win32api.keybd_event(0x11, 0, win32con.KEYEVENTF_KEYUP, 0) win32api.keybd_event(0x12, 0, win32con.KEYEVENTF_KEYUP, 0) win32api.keybd_event(0x71, 0, win32con.KEYEVENTF_KEYUP, 0) # 開啟偵錯程式 def OpenFile(path): regex = ".*x32dbg.*" cWindows = cWindow() cWindows.find_window_regex(regex) cWindows.SetAsForegroundWindow() cWindows.SetAsForegroundWindow() cWindows.OpenFile(path) # 關閉偵錯程式 def DeatchFile(): regex = ".*x32dbg.*" cWindows = cWindow() cWindows.find_window_regex(regex) cWindows.SetAsForegroundWindow() cWindows.SetAsForegroundWindow() cWindows.deatch() # 得到指令碼返回值 def GetScriptValue(dbg,script): try: ref = dbg.run_command_exec("push eax") if ref != True: return None ref = dbg.run_command_exec(f"eax={script}") if ref != True: return None reg = dbg.get_register("eax") ref = dbg.run_command_exec("pop eax") if ref != True: return None return reg except Exception: return None return None if __name__ == "__main__": dbg = MyDebug() dbg.connect() # 批次開啟一個列表 for item in ["D:Win32Project.exe","D:Windows ToolsC32ASMc32asm.exe"]: OpenFile(item) time.sleep(3) for i in range(1,100): dbg.set_debug("StepIn") time.sleep(0.2) eip = dbg.get_register("eip") print("eip = > {}".format(hex(eip))) time.sleep(3) DeatchFile()
到此這篇關於Python利用LyScript外掛實現批次開啟關閉程序的文章就介紹到這了,更多相關Python批次開啟關閉程序內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45