新CrackMe160之036 - Andrénalin.2

与旧版009相同

暴力破解:
1).按钮去灰
2). 暴力破解

  1. 按钮去灰, 使用VBExplorer工具找到按钮的Enable属性, 将值改为True保存(没有另存为, 所以需要提前备份原程序), 重新运行保存后的程序, 看到按钮已经亮起来了, 但删除输入的用户名后又会暗掉, 所以还需要继续操作, VBExplorer工具可看到输入框的change事件入口004024F0, OD载入保存后的程序, F9运行, 用户名输入一个a, 然后在004024F0下断点, 再删除a, 程序就会在断点处停下, 我们需要F8向下单步执行程序, 看到哪一行会把按钮变灰, 跟踪到004025B7处变灰了, 向上看有个push 0x0, 双击修改为push -0x1(与004025D6一样)保存, 到处去灰完成

  2. 先打开搜索界面瞧瞧, 果然还是直接看到了关键字, 也不懂是哪国的语言, 看着跟英文差不多, RichtiG, 应该就是Right吧, 正确的位置_ 另一个那么长的就是失败的位置, 因为直接运行提示的就是这个长的, 就算看不懂是什么也知道它肯定不是正确的提示, 还是继续往上找关键跳004022CB处nop掉, 如果有用户名与注册码有输入值这时已经可以正常提示成功了, 但如果没有输入任何东西时程序就崩溃了, 那我们就从头再来, 定位到方法入口00401FF0处下断点, 点OK, 停在断点处, F8向下一步步看是哪里发生的异常, 最终定位到0040222F处, 提示不合法的方法调用或参数错误, 我们就找到错误点的前面的一个跳00402134, 让他跳到成功分支去, 改为 jmp 004022D1 保存完成~

正常破解:
我们用VB Decomiler来分析按钮事件源码

Private Sub Command1_Click() '401FF0
  loc_00402092: var_58 = Form1.Text2.Text
  loc_004020CA: var_44 = var_58
  loc_00402126: For var_24 = 1 To Len(var_44) Step 1
  loc_00402134: If var_108 = 0 Then GoTo loc_004021D6
  loc_00402170: var_8008 = Asc(CStr(Mid(var_44, CLng(var_24), 1)))   '取每一位的ascii值
  loc_00402176: var_B4 = var_8008
  loc_004021A0: var_34 = var_34 + var_8008      '然后都加起来
  loc_004021CB: Next var_24
  loc_004021D1: GoTo loc_00402132
  loc_004021D6: ' Referenced from: 00402134
  loc_00402204: var_34 = var_34 * 1234567890   '加来起来的结果 * 这个固定值
  loc_00402254: Mid(var_34, 9, 1) = "-"                '然后把第9个值改为-号,  还有一个是4的位置也改-号
  loc_00402276: var_58 = Form1.Text1.Text
  loc_004022AE: var_8010 = (var_58 = var_34)
  loc_004022CB: If var_8010 = 0 Then GoTo loc_00402391
  loc_004022D1: Beep
  loc_00402374: var_54 = MsgBox("  RiCHTiG !!!!   ....  weiter mit dem Nächsten !!!", 48, "RiCHTiG !", 10, 10)
  loc_0040238C: GoTo loc_00402446
  loc_00402391: ' Referenced from: 004022CB
  loc_0040240F: var_8018 = MsgBox("Leider Falsch!   Nochmal veruschen ! Wenn Du es nicht schaffen solltest, schreib mir !  Andrenalin@gmx.net", 16, "LEiDER Falsch !  ", 10, 10)
  loc_0040242E: var_54 = var_8018
  loc_00402446: ' Referenced from: 0040238C
  loc_00402459: GoTo loc_0040248F
  loc_0040248E: Exit Sub
  loc_0040248F: ' Referenced from: 00402459
  loc_004024C0: GoTo loc_00esi
End Sub

这个vb代码基本上就可以直接用来写注册机了, 整理代理如下: keygen.vbs

user = inputbox("请输入用户名")
code = 0
for i=1 to len(user)
	code = code + Asc(Mid(user, CLng(i), 1))
next
code = code * 1234567890 & ""
code = Left(code, 3) & "-" & Mid(code, 5, 4) & "-" & right(code, len(code)-9)
msgbox("用户名为: " & user & chr(13) & "注册码为: " & code)

运行示例:
用户名: abc
注册码: 362-6295-660

 
 
本节高手录制的视频,点击前往查看

 
 
 

使用的工具连接(工具有点多有点大,可以先下OD,其它的后面慢慢下) 点击前往下载

下面是我的OD的界面布局,我觉得这4个是最常用的界面,其它的我基本上没用到~
OD界面布局

posted @ 2024-12-10 09:19  hankerstudio  阅读(21)  评论(0)    收藏  举报