160个练手CrackMe-011

来源:互联网 发布:cms管理系统是什么 编辑:程序博客网 时间:2024/06/05 07:47

1、无壳,VB编写

2、VB Decompiler反编译

13个按钮事件,4个周期事件。
重点在周期事件。都是类似的代码

  loc_00406068: For var_24 = 1 To Len(var_44) Step 1  loc_0040606E:   loc_00406070: If var_24 = 0 Then GoTo loc_0040619F  loc_0040608A: var_50 = CStr(Left(var_44, 4))  loc_004060DC: var_388 = Asc(Mid$(CStr(var_44), CLng(var_24), 1))  loc_0040611E: var_8C = Hex$((var_390 + var_CC))  loc_0040614B: var_34 = 0 & Hex$((var_390 + var_CC))  loc_00406194: Next var_24  loc_0040619A: GoTo loc_0040606E  loc_0040619F: 'Referenced from: 00406070  loc_004061C7: If (var_34 = "0817E747D7AFFF7C7F82836D74RR7A7F7E7B7C7D826D81KE7B7C") = 0 Then GoTo loc_00406215  loc_004061DA: Set var_54 = Me  loc_004061EE: Label3.Caption = "REGISTRIERT"  loc_0040620F: var_eax = %fobj  loc_00406215: 'Referenced from: 004061C7

大致意思是:
var_44 = 输入的字符
var_CC = var_44[:n]
var_388 = Asc(var_44[i])
var_34 = var_34 + str(hex(var_388 + var_CC))
var_34是要比较的字串;
if(var_34 == “0817E747D7AFFF7C7F82836D74RR7A7F7E7B7C7D826D81KE7B7C”)
  提示已注册

被比较的字串中有R、K等不是十六进制的字符,说明是混淆项。
右击搜索Unicode。

 中文搜索引擎, 条目 38 地址=004065E4 反汇编=mov dword ptr ss:[ebp-0xAC],Andréna.00402390 文本字符串=0817E747D7A7D7C7F82836D74747A7F7E7B7C7D826D817E7B7C

004065E4处的都是十六进制字符。最开始的0是直接加上的,除去0,每两个字符为一个字节。
VB Decompiler中定位到 Timer1 的 loc_004064C4 处

loc_004064C4: var_50 = CStr(Left(var_44, 2))  //取左边2个字符,即var_CC的值

先根据81确定前两个字符。

>>> for i in range(0x81):    if chr(0x81-i) == str(i)[0]:        print(i)        break74>>> 

得出前两个字符为74,即var_CC = 74;

3、还原

“817E747D7A7D7C7F82836D74747A7F7E7B7C7D826D817E7B7C”

>>> s = '817E747D7A7D7C7F82836D74747A7F7E7B7C7D826D817E7B7C'>>> for i in range(len(s)):    if i%2 == 1:        print(chr(int(s[i-1:i+1], 16)-74), end='')74*3032589#**0541238#7412

正确的Serial:74*3032589#**0541238#7412

这里写图片描述

REGISTRIERT!

原创粉丝点击