160个练手CrackMe-011

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)
        break


74
>>> 

得出前两个字符为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!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值