很久没玩OD,正好机器上试用版的LeapFTP过期了,于是心血来潮准备写个注册机,LeapFTP版本v2.76
记得以前跟过LeapFTP,注册码分为两段,是明文存放在内存中,但是没有去细看算法,今天决定把算法搞定以后升级也方便^_^.
用OD,载入,下注册表断点(为什么下注册表断点?因为我跟过^_^),关键部分0x00484d89处停下,程序去读取"Software/LeapWare/Registry/"下有没有UserName和UserKey两个东西,往下看,这两个东西都必须有否则就直接跳走了.这个版本的Leap似乎有点改进,记得以前好像是无论成功失败都会去写注册表,现在是只有注册成功了里面才有东西,不管那么多,先手工添加方便分析-_-#.
走啊走啊走啊走,走到了一个地方
00484FB2 |
.
E8 B1FDFFFF
call
00484D68
00484FB7 | > 807E 35 00 cmp byte ptr [esi + 35 ] , 0
00484FBB | . 75 33 jnz short 00484FF0
00484FBD | . 807E 36 00 cmp byte ptr [esi + 36 ] , 0
00484FC1 | . 74 13 je short 00484FD6
00484FC3 | . A1 94C14B00 mov eax , dword ptr [4BC194]
00484FC8 | . 8B00 mov eax , dword ptr [eax]
00484FCA | . 8B56 28 mov edx , dword ptr [esi + 28 ]
00484FCD | . E8 22F8FFFF call 004847F4 ; 这个CALL比较长度是否合格
00484FD2 | . 84C0 test al , al
00484FB7 | > 807E 35 00 cmp byte ptr [esi + 35 ] , 0
00484FBB | . 75 33 jnz short 00484FF0
00484FBD | . 807E 36 00 cmp byte ptr [esi + 36 ] , 0
00484FC1 | . 74 13 je short 00484FD6
00484FC3 | . A1 94C14B00 mov eax , dword ptr [4BC194]
00484FC8 | . 8B00 mov eax , dword ptr [eax]
00484FCA | . 8B56 28 mov edx , dword ptr [esi + 28 ]
00484FCD | . E8 22F8FFFF call 004847F4 ; 这个CALL比较长度是否合格
00484FD2 | . 84C0 test al , al