无壳 又是一道VB题目
用OD动态调试,寻找字符串
同时用VB Decompiler静态分析
有一个地方,静态反编译的没搞清楚
loc_00403271: var_40 = CStr(Mid(var_28, 1, 1))
loc_0040328E: var_44 = CStr(Mid(2000, 1, 1))
loc_004032CD: var_38 = var_38 & Chr(Asc(var_40) xor ecx)
loc_00403312: esi = 00000001h + 1
loc_00403319: 00000001h = 00000001h + 00000001h
到最后动态调试,调出来了猫腻
这里是循环name的长度次
每次有个异或,我输入的name:123456 serial:12345
string 32 30 30 30 32 30
name 31 32 33 34 35 36
xor 3 2 3 4 7 6
看出来了是字符串“2000”循环与name字符串异或
写出exploit
name = "qBQSYdXUe_B\V"
string = "2000"
i = 0
s = ''
for char in name:
s += chr(ord(char)^ord(string[i%4]))
i += 1
print s