美文网首页
每日总结-第五天-txwp

每日总结-第五天-txwp

作者: SamiraG | 来源:发表于2020-04-05 11:36 被阅读0次

ring3

从dmp文件中恢复出可执行文件

使用windbg open crash dump:

0:004> lmvm winmine
Browse full module list
start    end        module name
01000000 01020000   winmine    (deferred)             
    Image path: D:\Temp\bin\winmine.exe
    Image name: winmine.exe
    Browse all global symbols  functions  data
    Timestamp:        Sat Aug 18 04:54:13 2001 (3B7D8475)
    CheckSum:         000273C4
    ImageSize:        00020000
    File version:     5.1.2600.0
    Product version:  5.1.2600.0
    File flags:       0 (Mask 3F)
    File OS:          40004 NT Win32
    File type:        1.0 App
    File date:        00000000.00000000
    Translations:     0804.04b0
    Information from resource tables:
        CompanyName:      Microsoft Corporation
        ProductName:      Microsoft(R) Windows(R) Operating System
        InternalName:     winmine
        OriginalFilename: WINMINE.EXE
        ProductVersion:   5.1.2600.0
        FileVersion:      5.1.2600.0 (xpclient.010817-1148)
        FileDescription:  Entertainment Pack Minesweeper Game
        LegalCopyright:   (C) Microsoft Corporation. All rights reserved.

0:004> .writemem D:\winmine1.exe 01000000 L?20000

查找dump出的文件与原始文件指令的不同之处

#coding:utf-8
import capstone as cs
with open('winmine.exe') as f:
    raw1 = f.read()

with open('winmine1.exe') as f:
    raw2 = f.read()


code1 = raw1[0x80c:0x80c+0x2a15]
code2 = raw2[0x140c:0x140c+0x2a15]

md32 = cs.Cs(cs.CS_ARCH_X86, cs.CS_MODE_32)


def ext32():
    discode1 = list(md32.disasm(code1, 0x0100140C))
    discode2 = list(md32.disasm(code2, 0x0100140C))
    length1 = len(discode1)
    length2 = len(discode2)
    j = 0
    for i in range(length1):
        op1 = discode1[i].mnemonic
        ch1 = discode1[i].op_str
        op2 = discode2[j].mnemonic
        ch2 = discode2[j].op_str
        if op1 == op2 and ch1 == ch2:
            j = j + 1
        else:
            address = discode1[i].address
            offset = address - 0x0100140C + 0x80c
            print "\noffset: ", hex(offset).strip('L')
            print "address: ", hex(address).strip('L')
            print "==========before========="
            print discode1[i - 1].mnemonic, discode1[i - 1].op_str
            print op1, ch1
            print discode1[i + 1].mnemonic, discode1[i + 1].op_str
            print "==========after========="
            print discode2[j - 1].mnemonic, discode2[j - 1].op_str
            print op2, ch2,
            if op2 == "nop":
                while op2 == "nop":
                    j = j + 1
                    op2 = discode2[j].mnemonic
                    if op2 == "nop":
                        print op2,
                print ""
                print discode2[j].mnemonic, discode2[j].op_str
            else:
                j = j + 1
                print ""
                print discode2[j].mnemonic, discode2[j].op_str

if __name__ == "__main__":
    ext32()

执行结果如下

$ python cmp.py

offset:  0x23f5
address:  0x1002ff5
==========before=========
jge 0x1003007
inc dword ptr [0x100579c]
call 0x10028b5
==========after=========
jge 0x1003007
nop  nop nop nop nop nop 
call 0x10028b5

offset:  0x2991
address:  0x1003591
==========before=========
call 0x1002eab
push 0
jmp 0x10035ab
==========after=========
call 0x1002eab
jmp 0x10035b0 
jmp 0x10035ab

可以看到有两处修改,分别位于0x23f5和0x2991处

指令修改的作用

分别对这两处进行分析可知0x23f5处执行修改的目的是停止计时,0x2991处指令修改的目的是即使踩雷也不会结束游戏

ring0

膜大佬[跪] https://www.jianshu.com/p/daf0a914df3c

相关文章

  • 每日总结-第五天-txwp

    ring3 从dmp文件中恢复出可执行文件 使用windbg open crash dump: 查找dump出的文...

  • 自我复盘

    每日计划总结,每日时间复盘,反馈总结规矩,计划,实施,总结 每日复盘的内容如下: 都完成事项: 未完成事项: 原因...

  • 见证自律-见证改变-见证奇迹(九十五)

    每日心情: 接触自媒体第五天,发视频第五天……坚持90天,再看结果,剩余85天…… 会员分享: 首先在...

  • 2017/1/14本周总结反思

    #每日打卡# 每日三件事✔ 每日小确幸✔ 每日昨日总结✔ 每日睡前醒后冥想✔ 今天加班出货...

  • 2022-01-09

    每日睡觉之前做个小总结,就知道实际做的事情并不多, 每日总结 复盘计划 完成每日工作 没周 每月 才可以更好的完成...

  • J爸训娃记(136) 让孩子学会每日总结非常重要

    第一百三十六篇 4-5岁目标的达成情况总结 (三) (接上篇) 5. 每日总结 每日总结也是儿子坚持得比较不错的习...

  • 每日总结

    回顾总结每日成就事件两三事,发觉个人优势,持续正向反馈。选择自己喜欢,喜欢自己选择。 每日总结每日经验教训一两事,...

  • 日志

    到了晚上,就该到了总结的时刻,在现在的公司里,少了要求工作总结,而自己每日的感想并没有落下。如果公司要求每日总结,...

  • java学习day05-数组高级

    java学习第五天内容总结: 学习内容: 关注公众号:java进阶架构师,获取的学习视频 总结: 1、方法参数:值...

  • 【日结】2015年3月21日 开启每日总结模式 4月4日关闭

    经过了两个星期的实践,决定关闭每日总结发布模式,每周发布总结,每日总结依然会写,家庭内部分享,每周整理出文档进行发...

网友评论

      本文标题:每日总结-第五天-txwp

      本文链接:https://www.haomeiwen.com/subject/intuphtx.html