Welcome My Friend

Crack013

Crack013-badboy

关于题目

  • 通过PEID分析,此题是P-Code编码的VB程序,下图是未破解前程序所有状态。两种模式,一种是序列号,一种是名称加序列号(输入字符5个以上),输入不正确会出现Try Again字样。

Crack013

解题思路

如果此题采用OllyDBG动态分析,很难找到合适断点去修改指令破解。既然程序采用VB就可以使用VB.Decompiler进行静态分析并修改,达到破解的目的。

题解过程

  • 首先使用PEID查壳,检测到是VB程序,如下图:

Crack013

  • 用VB.Decompiler加载exe文件,如下图
    Crack013

  • 点击下方Combol1_Click事件进行分析,如下图
    Crack013

  • 分别点击Command2和Command4进行进一步分析
    Crack013

Crack013

  • 根据分析,通过Disassemble找到判断语句对应的反汇编指令,在HEX Editor中搜索并进行更改,破解模式1:搜索4051DA并将1C改为1D或者将4051CA处FB 30改为FB 3D。破解模式二:搜索405815将1C改为1D或者将40580D处FB 30改为FB 3D,(部分指令含义见文章末尾附录),如下图:

Crack013

Crack013

  • 破解成功截图

Crack013

  • 另外的方法:用OllyDBG来分析的话,可以找到正确密码,但是很难将其破解。简单介绍这种思路:

    用OllyDBG将exe运行,选择断点:BreakPoint->VB APIs->Comaparision->_vbaStrcomp,然后F9运行程序,输入序列号:123456,点击try,F9运行程序会中断,看主模块的堆栈区,会显示出来正确的答案:7718158。

Crack013

Crack013

  • 同理,名称加序列号模式也会出现正确序列号:

Crack013

  • 这时候名称不变再输入一次序列号57572-444610就会成功。

Crack013

  • 程序有一点特殊的地方:输入正确的序列号点try,显示”Congratulation !”和“OK”按钮,点OK按钮后,回到序列号页,又输入刚刚正确的的序列号,再次点try会显示”Try Again!”,这是因为在第一次注册成功的时候,根据上面分析Label3.caption被赋值:“Congratulation !”,只有再次输入Congratulation !才能再次成功,不再会跳出Try Again!

附录

  • 跳转指令:

Branch-无条件跳转-1E

BranchT-栈顶数据为真则跳转-1D

BranchF-栈顶数据为假则跳转-1C

  • 比较指令:

EqVarBool-比较变量相等:FB 33

NeVarBool-比较变量不相等:FB 40

EqStr-比较字符串相等:FB 30

NeStr-比较字符串不相等:FB 3D

Lt-判断是否小于

Gt-判断是否大于

补充

  • 这里补充一下栈帧的概念,栈帧是用来实现过程/函数调用一种数据结构(就是栈),也就是记录每次函数调用的相关信息的记录单元。这个参考网址里面的内容很经典
  • 关键跳转前面一般都是关键call,所以要写注册机的话,往这里分析
  • idiv是有符号除法,影响的标志位有A,C,O,P,S,Z,32位中,隐含的除数有EDX和EAX,商存在EAX,余数存在EDX
  • CDQ:这个指令把 EAX 的第 31 bit 复制到 EDX 的每一个 bit 上。 它大多出现在除法运算之前。它实际的作用只是把EDX的所有位都设成EAX最高位的值。也就是说,当EAX <80000000, EDX 为00000000;当EAX >= 80000000, EDX 则为FFFFFFFF。
  • 标志位补充:
    • O:Overflow,溢出标志
    • S:Sign,符号标志,结果为负置1
    • Z
    • C:Carry Flag,进位
    • A:Auxiliary carry Flag,辅助进位标志,记录运算时第3位(半个字节)产生的进位,有进位为1
    • P:Parity,奇偶标志
    • D:Direction,方向标志
    • I:Interrupt,中断标志
    • T:Trap,陷阱标志
  • 一些汇编指令
  • shl,逻辑左移位,最后移出的一位写入cf中,最低位用0补充

-------------本文结束-------------

文章作者: Summary
文章链接: http://noblestaspiration.net/2018/04/04/Crack013/
版权声明:博客所有文章除特别声明外,均采用 CC BY-NC-ND 4.0 许可协议,转载请注明出处!

想要分我一杯羹吗