1、分析环境
2、运行程序,了解大致的运行过程
3、运行Ollydbg调试程序
3.1、分析结果简述
4、破解
4.1、方法一
4.2、方法二
5、运行结果
6、与书中不同之处

1、分析环境

  • 操作系统:Win10 1809 x64
  • 调试工具:Ollydbg

2、运行程序,了解大致的运行过程

分析abex-crackme#1 随笔 第1张

分析abex-crackme#1 随笔 第2张

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

3、运行Ollydbg调试程序

  • 由于该程序是由汇编所写,可以直接看到main()函数

分析abex-crackme#1 随笔 第3张

  • 使用F8运行代码,并分析
    • 其中GetDriveTypeA是获取驱动器类型的API,一般返回3

分析abex-crackme#1 随笔 第4张

3.1、分析结果简述

  • ESI初始值为0,经过3次加法运算得到结果为3
  • GetDriveTypeA获得的结果为3,经过2次减法运算得到结果为1
  • 由上述结果得知,GetDriveTypeA经过2次减法运算得到结果为3才能跳转到正确的弹窗,即GetDriveTypeA的返回值为5

  • 通过查询MSDN确定GetDriveTypeA的返回值为5的驱动器类型为CD-ROM

  • 结合弹窗的语句与MSDN可得出如下结论

结论:该程序是判断C盘驱动器是否为CD-ROM

4、破解

4.1、方法一

直接将程序读取的驱动器号改成操作系统的CD-ROM驱动器号。

例如:操作系统CD-ROM的驱动器号为d,直接修改了读取的驱动器号为d,相应的ASCII码为64,更改完毕之后运行程序。

分析abex-crackme#1 随笔 第5张

4.2、方法二

修改汇编语句,将条件跳转改成无条件跳转

优点:如果打上补丁,该程序在任何Windows主机上运行都会弹出正确的弹窗

分析abex-crackme#1 随笔 第6张

5、运行结果

分析abex-crackme#1 随笔 第7张

6、与书中不同之处

  • Win7和Win10环境下,MessageBoxA并没有将ESI置为FFFFFFFF。
 
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄