学OD — 字符参考

  OD字符参考

  人家牵着手   一步一步跟人家走。。。

  主要是为了熟悉OD的功能重点不是破解(目前)

  学习字符参考个人理解 就是在反汇编程序中找需要破解的软件上出现的字符串比如输入注册码错误了会弹出MessageBox提示你什么什么的。。等等.. 找到这个字符在的位置后在其前前后后会找到需要输入注册码的地方断下分析即可

  有个简单的小软件拿来实验CFF Crackme #3,采用用户名/序列号保护方式如下

  很简单输入正确的用户名序列号即提示你success否则弹框

  我们就从这个错误对话框中显示的“Wrong Serial, try again!”来入手。。

  将软件放进OD程序停在入口处

  00441270 > $  55            PUSH EBP

  00441271   .  8BEC          MOV  EBP,  ESP

  此时在反汇编窗口中 右击  然后 查找->所有参考文本字串  出来另一个对话框,我们在这个对话框里右击,选择“查找文本”,输入“Wrong Serial, try again!”的开头单词“Wrong”(注意这里查找内容要区分大小写)来查找,找到一处:

  在在找到的字符行上右击选择反汇编窗口中跟随即来到反汇编程序相应的指令处

  或者直接Enter也可。现在是查到一处可能还有其他的参考,这时在反汇编程序中对应的那行上右击选择查找参考->立即数,即会出现。。这里出现了两处就是说用户名和序列号是分开检验的哪个不正确会跳到各自的“Wrong Serial, try again!”处

  现在找到了如果输入错误的用户名或序列号后跳到的地方.看其代码分析是从哪里跳转过来的即可

  这两个“Wrong Serial, try again!” 是这样的…

  图中分析地址即可看出跳转的脉络

  看push 得知是在00440F51  |.  E8 D62BFCFF   CALL CrackMe3.00403B2C

  这句指令后 如果ZF不等于0 则跳到“Wrong Serial, try again!”

  很明显CALL CrackMe3.00403B2C 这里一定是call到一个地方 比较去了 所以

  一定要F7(步入)进去 分析 不要F8(步过)

  注意这里指令前边的箭头 指向什么方向就是向什么方向跳

  现在就可以下断点 分析一下程序了 在第一个要跳到Wrong的位置  即判断用户名的Call

  即00440F34地址处。。下断点F2. 接着按F9运行程序 即在此断点处断下F7进去 分析即可 记住一定要F7 分析程序 即关注寄存器的变化 得知我们输入的用户名是跟Registered User 进行比较的 。所以用户名即知

  同理 分析 序列号 得知 正确序列号为"GFX-754-IER-954"  有一特点在这里

  地址00440F51 处的CALL CrackMe3.00403B2C 和上面我们分析的

  地址00440F34 处的CALL CrackMe3.00403B2C的汇编指令是一样的

  这说明检测用户名和注册码是用的同一个子程序。而这个子程序CALL 我们在上面已经分析过了。我们执行到现在可以很容易得出结论,这个CALL 也就是把我们输入的注册码与00440F4C 地址处指令后的“GFX-754-IER-954”作比较,相等则OK。

  好了

  现在我们在菜单 查看->断点,打开断点窗口(也可以通过ALT+B 或点击工具栏上那个“B”图标):在这里可以对所有断点进行操作  这里主要是为了保险一点,先不删除 万一分析错误,我们还要接着分析,要是把断点删除了就要做一些重复工作了。所以先禁用一下,如果经过实际验证证明我们的分析是正确的,再删不迟。现在我们把断点禁用,在OllyDBG 中按F9 键让程序运行。输入我们经分析得出的内容:

  用户名:Registered User

  注册码:GFX-754-IER-954

  点击“Register now !”按钮,额 成功了….

 

发表评论

邮箱地址不会被公开。 必填项已用*标注