无壳32位
没什么头绪,用findcryto查一下
找一下位置
__CheckForDebuggerJustMyCode应该是个反调试,把它nop了
X查一下交叉引用,看看父级函数什么样
大概是获取了输入和长度,根据题目提示,IpString应该是账号,WindowTextLengthA应该是账号长度
猜测v4可能是密码,v8是密码长度,v2应该是内存地址之类的东西
37行进去
反调试函数nop掉
是一个判断函数,应该存在密文对比,猜测是前文获取了用户名,将用户名作为密钥blowfish加密了输入的密文,对比成功后输出正确
这里可以用动态调试把cmp过程中调取的用于对比的密文搞出来
调用cmp函数的位置下个断点
数据就在call前面压栈的寄存器内
取出来都补成两位
连起来就是密文 11A51F049550E2508F17E16CF1632B47
找个在线工具解密(CyberChef的密钥格式支持太少,很痛苦)
注意几个参数的设置
拼接一下 D0g3{UzBtZTBuZV9EMGczQHRoZWJsdWVmMXNo}