首页 > 其他 > 详细

BUU-Dragon Quest

时间:2020-09-24 15:59:22      阅读:33      评论:0      收藏:0      [点我收藏+]

借鉴于https://www.cnblogs.com/harmonica11/p/13417084.html

这个混淆不清楚叫什么 但是xn 和yn都没有变 所以某些分支永远成立,某些分支永远成立

写脚本去混淆

技术分享图片
addr=
while(addr<):
    next_addr = NextHead(addr)
    if "eax, ds:" in GetDisasm(addr):
        PatchByte(addr,0xb8)
        PatchByte(addr+1,0x00)
        PatchByte(addr+2,0x00)
        PatchByte(addr+3,0x00)
        PatchByte(addr+4,0x00)
        PatchByte(addr+5,0x90)
        PatchByte(addr+6,0x90)
    if "ecx, ds:" in GetDisasm(addr):
        PatchByte(addr,0xb9)
        PatchByte(addr+1,0x00)
        PatchByte(addr+2,0x00)
        PatchByte(addr+3,0x00)
        PatchByte(addr+4,0x00)
        PatchByte(addr+5,0x90)
        PatchByte(addr+6,0x90)
    if "edx, ds:" in GetDisasm(addr):
        PatchByte(addr,0xba)
        PatchByte(addr+1,0x00)
        PatchByte(addr+2,0x00)
        PatchByte(addr+3,0x00)
        PatchByte(addr+4,0x00)
        PatchByte(addr+5,0x90)
        PatchByte(addr+6,0x90)
    if "esi, ds:" in GetDisasm(addr):
        PatchByte(addr,0xbe)
        PatchByte(addr+1,0x00)
        PatchByte(addr+2,0x00)
        PatchByte(addr+3,0x00)
        PatchByte(addr+4,0x00)
        PatchByte(addr+5,0x90)
        PatchByte(addr+6,0x90)
    if "edi, ds:" in GetDisasm(addr):
        PatchByte(addr,0xbf)
        PatchByte(addr+1,0x00)
        PatchByte(addr+2,0x00)
        PatchByte(addr+3,0x00)
        PatchByte(addr+4,0x00)
        PatchByte(addr+5,0x90)
        PatchByte(addr+6,0x90)
    addr = next_addr
View Code

然后他的逻辑就很清晰了 是一个flag的前缀和

BUU-Dragon Quest

原文:https://www.cnblogs.com/lxy8584099/p/13724079.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!