冥界3大法王 发表于 2023-4-20 21:01

x64dbg里边运行Python脚本到底有多坑爹?

https://www.52pojie.cn/thread-1774906-2-1.html就是最近发现的这个插件,这是目前的第三款Python插件。
x64dbg插件页(最顶上的那个)需要安装多个支持
(52破解的那贴里的那个)简单些,但是你还得配合虚拟机远程调试


经虚拟机 和本机多次实验,才发现这东西有兼容性问题,会让调试器崩溃。
或有的版本明明也达到oep了,调试器还是在卡顿后退出了。

whyida 发表于 2023-4-22 12:00

冥界3大法王 发表于 2023-4-22 11:34
哈哈,我明白了。

可以用也可以不用联虚拟机。
找upx oep脚本
from LyScript32 import MyDebug

if __name__ == "__main__":
    # 初始化
    dbg = MyDebug()

    # 连接到调试器
    connect_flag = dbg.connect()
    print("连接状态: {}".format(connect_flag))

    # 检测套接字是否还在
    ref = dbg.is_connect()
    print("是否在连接: ", ref)

    is_64 = False

    # 判断是否时64位数
    if is_64 == False:
      currentIP = dbg.get_register("eip")

      if dbg.read_memory_word(currentIP) != int(0xBE60):
            print("[-] 可能不是UPX")
            dbg.close()

      patternAddr = dbg.scan_memory_one("83 EC ?? E9 ?? ?? ?? ?? 00")
      print("匹配到的地址: {}".format(hex(patternAddr)))

      dbg.set_breakpoint(patternAddr)
      dbg.set_debug("Run")
      dbg.set_debug("Wait")
      dbg.delete_breakpoint(patternAddr)

      dbg.set_debug("StepOver")
      dbg.set_debug("StepOver")
      print("[+] 程序OEP = 0x{:x}".format(dbg.get_register("eip")))

    else:
      currentIP = dbg.get_register("rip")

      if dbg.read_memory_dword(currentIP) != int(0x55575653):
            print("[-] 可能不是UPX")
            dbg.close()

      patternAddr = dbg.scan_memory_one("48 83 EC ?? E9")
      print("匹配到的地址: {}".format(hex(patternAddr)))

      dbg.set_breakpoint(patternAddr)
      dbg.set_debug("Run")
      dbg.set_debug("Wait")
      dbg.delete_breakpoint(patternAddr)

      dbg.set_debug("StepOver")
      dbg.set_debug("StepOver")
      print("[+] 程序OEP = 0x{:x}".format(dbg.get_register("eip")))

    dbg.close()

冥界3大法王 发表于 2023-4-22 13:44

whyida 发表于 2023-4-22 12:00
可以用也可以不用联虚拟机。
找upx oep脚本
from LyScript32 import MyDebug ...

@whyida
我从主页上复制了几个实验
譬如下面的这个
from LyScript32 import MyDebug

if __name__ == "__main__":
    dbg = MyDebug()
    connect_flag = dbg.connect()
    print("连接状态: {}".format(connect_flag))

    size = dbg.size_from_name("win32.exe")
    print("长度: {}".format(size))

    dbg.close()
第2个print等待中。。。 类似的取模块基址的。。。也是等待中

rxjz88888 发表于 2023-4-20 21:27

谢谢,明白了

冥界3大法王 发表于 2023-4-20 21:40

rxjz88888 发表于 2023-4-20 21:27
谢谢,明白了

原来,不是有导入模块的行,就一定是Python里边用的。。。
我觉得这东西还是不如x64dbg的原生脚本+我用Delphi生成的脚本生成器来得方便。。。至少很多东西是指哪打哪。。。这倒好,用一个新问题解决一个老问题。结果老的也没有通透,新的也没有娴熟。。。

冥界3大法王 发表于 2023-4-20 21:58

https://blog.csdn.net/yan_star/article/details/113621948
他这个的实现,我用纯脚本,也一样能做到。

TXtianxing 发表于 2023-4-20 22:25


谢谢,明白了

努力画图 发表于 2023-4-21 06:38

众里寻他千百度    {:1_893:}

only998 发表于 2023-4-21 07:40

我举得python可能不太适合x64dbg,太重了,虽然功能很多,但是依赖也很多,要编译起来也困难。不如用c++写一个原生的脚本,或者拿lua之类的来改改。

daoye9988 发表于 2023-4-21 08:05

脚本够用就好

yangand 发表于 2023-4-21 09:05

我原来试PYTHON脚本的时候,第一次可以正常运行,多试几次,好像就会崩。再打开X64DGB,又是开始可以,后来不行

冥界3大法王 发表于 2023-4-21 09:33

yangand 发表于 2023-4-21 09:05
我原来试PYTHON脚本的时候,第一次可以正常运行,多试几次,好像就会崩。再打开X64DGB,又是开始可以,后来 ...

原来大家都有遇到不是驴不走,就是磨不转的情况啊。
页: [1] 2 3
查看完整版本: x64dbg里边运行Python脚本到底有多坑爹?