1625-5 王子昂 总结《2017年6月6日》 【连续第248天总结】
A. CrackMe(15)
B. 今天的一星又有点太简单了╮(╯_╰)╭不过第一次爆破掉NAG,而且还是绕了一下的,还是记一下
拖入PEiD,无壳VB5
运行,首先跳出一个Nag窗口,然后是Serial
先处理Nag,因为和001的无边框计时7s不同,直接是一个MsgBox
那思路很明显,暂停后ALT+K找到调用位置,NOP掉
然后运行。嗯?直接结束了
因为以前爆NAG的时候出现过错误,记得是在call之前push进去的参数没被函数内部pop掉,因此导致内存错误
这次虽然没有报内存错误,但也可能是被忽略掉异常了吧?试试把前面的参数全部NOP掉
再运行,仍然直接结束
那么有两种可能,一种是下文通过某种方法检测是否弹窗,例如取得弹窗的返回值之类的
另一种是弹窗的下一步才是主程序,既应该跟进去在内部处理
思考了一下,call的是VB库的MsgBox,不太可能是后者
于是上下翻翻代码看看,发现后面有一个vbaVarTstEq的API,后面在跳转分支中又有一个vbaEnd
那很明显,这个地方应该是通过某种方法判断是否弹窗成功,然后再继续运行或End
将两个判断都NOP掉,再运行,爆破成功
Serial就很简单了,在错误提示的弹窗时同样暂停后找到MsgBox的call
上下翻翻,很容易发现了正确文本,在它的上方有一个vbaStrCmp,再上方甚至直接有一串字符串显示出来了“2G83G35Hs2”
看起来就很像Serial嘛,输入试试,成功
上次014用VB Decompiler反编译出的代码很混乱可能是因为VB Decompiler比较适合P-CODE伪编译,而书上说VB的自然编译更适合用SmartCheck来逆向。研究了一下好像不支持WIN7以后的版本,只能在XP中动。兼容模式运行也没有用,可能直接拖个XP的虚拟机来搞了……
C. 明日计划
计算思维第二章