Python利用LyScript插件实现批量打开关闭进程

 更新时间:2022年07月22日 14:23:04   作者:lyshark  
LyScript是一款x64dbg主动化操控插件,经过Python操控X64dbg,完成了远程动态调试,解决了逆向工作者剖析漏洞,寻觅指令片段,原生脚本不行强壮的问题。本文将利用LyScript插件实现批量打开关闭进程,感兴趣的可以了解一下

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 Tools\C32ASM\c32asm.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批量打开关闭进程内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python moviepy 的用法入门篇

    python moviepy 的用法入门篇

    MoviePy(全套文件)是一个用于视频编辑Python库:切割、拼接、标题插入,视频合成(即非线性编辑),视频处理和自定义效果的创造,本文给大家介绍python moviepy 的用法详解,感兴趣的朋友跟随小编一起看看吧
    2022-02-02
  • 关于命令行执行Python脚本的传参方式

    关于命令行执行Python脚本的传参方式

    这篇文章主要介绍了关于命令行执行Python脚本的传参方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • 实例讲解Python中sys.argv[]的用法

    实例讲解Python中sys.argv[]的用法

    在阅读facenet网络的代码的时候,遇到了sys.argv[]这个函数,所以下面这篇文章主要给大家介绍了关于Python中sys.argv[]用法的相关资料,需要的朋友可以参考下
    2021-06-06
  • Python 使用类写装饰器的小技巧

    Python 使用类写装饰器的小技巧

    装饰器是一个返回函数的函数。写一个装饰器,除了最常见的在函数中定义函数以外,Python还允许使用类来定义一个装饰器。这篇文章给大家分享Python 使用类写装饰器的小技巧,一起看看吧
    2018-09-09
  • Python 数据结构之十大经典排序算法一文通关

    Python 数据结构之十大经典排序算法一文通关

    排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存
    2021-10-10
  • Python连接HDFS实现文件上传下载及Pandas转换文本文件到CSV操作

    Python连接HDFS实现文件上传下载及Pandas转换文本文件到CSV操作

    这篇文章主要介绍了Python连接HDFS实现文件上传下载及Pandas转换文本文件到CSV操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • Python 自动化处理Excel和Word实现自动办公

    Python 自动化处理Excel和Word实现自动办公

    毫无疑问,Microsoft Excel 和 Word 是我们日常办公中使用最广泛的办公软件。将反复、复杂的工作自动化处理,是我们需要思考的问题,本篇文章帮你解决这个问题
    2021-11-11
  • Python读取txt内容写入xls格式excel中的方法

    Python读取txt内容写入xls格式excel中的方法

    今天小编就为大家分享一篇Python读取txt内容写入xls格式excel中的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • Python编程中的for循环语句学习教程

    Python编程中的for循环语句学习教程

    这篇文章主要介绍了Python编程中的for循环语句学习教程,是Python入门学习中的基础知识,需要的朋友可以参考下
    2015-10-10
  • 浅谈Python函数式编程的返回函数与匿名函数

    浅谈Python函数式编程的返回函数与匿名函数

    这篇文章主要介绍了浅谈Python函数式编程的返回函数与匿名函数,如果一个变量指向了一个函数,那么,可以通过该变量来调用这个函数,需要的朋友可以参考下
    2023-04-04

最新评论