一、工具和调试环境
二、分析用户名/注册码的算法
2.1运行程序
只有一个key编辑框和ok按钮,直接点击ok按钮会报错
008-01.png (16.93 KB, 下载次数: 0)
下载附件
2023-2-4 20:14 上传
2.2查壳
用Die查壳,无壳,vb程序
2.3详细分析
既然有提示字符串,直接上x64dbg搜索字符串
008-02.png (28.68 KB, 下载次数: 0)
下载附件
2023-2-4 20:14 上传
字符串很少,不过几乎都是我们需要的,直接双击跟过去看看。
008-03.png (241.71 KB, 下载次数: 0)
下载附件
2023-2-4 20:14 上传
向上不远处就能找到疑似关键跳转,通过测试确定0x401D9D处就是关键跳转。
008-04.png (194.57 KB, 下载次数: 0)
下载附件
2023-2-4 20:14 上传
貌似vb程序的比较都是上图红框中的格式,这个地方的推算已经在002中讲过,如下
; eax = __vbaStrCmp(str1, str2)的返回值, 相等返回0
mov esi, eax
neg esi ; 当 eax = 0 时, esi = 0, eax != 0 时,esi = -1
sbb esi, esi ; 当 eax = 0 时, esi = 0, eax != 0 时,esi = -1
inc esi ; 当 eax = 0 时, esi = 1, eax != 0 时,esi = 0
neg esi ; 当 eax = 0 时, esi = -1, eax != 0 时,esi = 0
; 即 str1 与 str2 相等时, esi = -1, 不相等时, esi = 0
也就是ecx指向的缓冲区中的字符串和SynTaX 2oo1一样,猜测可能ecx指向的缓冲区就是我们输入的key,经测试确实如此。那么该cm就结束了。
没有什么算法。key就是一串固定的字符串SynTaX 2oo1