作者:yulongying
声明:这篇文章仅仅是破解学习交流使用如果用在不法商业,责任由不法使用者承担(反正就是与我无关)
使用工具:process monitor+od
最近几天都在逆向VB的程序 由于还是菜鸟阶段 VB逆向出来的程序 看的真是要命,在破解过程中也是连蒙带猜的,昨天破解了一个叫鼠标点击精灵V 3.9.108的共享软件,今天刚刚破解了一个叫《Windows瑞士军刀》的软件,原理都是一样的也就是其中的算法不一样:
在程序启动的时候读取注册表的注册码放的地方,如果读取的注册码经过验证算法验证失败就是未注册版 如果验证成功也就是注册版的了。所以即使在你启动程序后点击注册按钮注册这段代码里面爆破,也是无济于事。因为启动的时候还是会验证的,所以只在启动的验证的时候爆破了 就达到了真正破解了。
破解过程我大概说以下要点,就不那么详细了,因为我自己也都是连蒙带猜的。主要VB的参数很少是原始类型,都是一些不知道的结构体,所以对我这样的新手来说真的很痛苦 哈哈
首先用Process monitor监控下程序启动读取注册表的位置在这里:
15:25:47.9078889 WindowsSAK.exe 1968 RegQueryValue HKCU\Software\WindowsSAK\CONFIG\SN SUCCESS Type: REG_SZ, Length: 72, Data: 123
注册码就是保存在这里了。RegQueryValue HKCU\Software\WindowsSAK\CONFIG\SN
然后在所有的RegQueryValue 函数都设置条件断点有
RegQueryValueExA RegQueryValueExW RegQueryValueW RegQueryValueA
ansi版本的函数就设置STRING[[esp+8]]=="SN"
unicode版本的函数就设置UNICODE[[esp+8]]=="SN"
这样就断点了下来了
0012FB78 004B4468 /CALL 到 RegQueryValueExA 来自 WindowsS.004B4463
0012FB7C 00000104 |hKey = 104
0012FB80 0015CEF4 |ValueName = "SN"
0012FB84 00000000 |Reserved = NULL
0012FB88 0012FBB0 |pValueType = 0012FBB0
0012FB8C 0012FBAC |Buffer = 0012FBAC
0012FB90 0012FBFC \pBufSize = 0012FBFC
然后alt+F9回到用领空
004B445E . 8B55 DC mov edx, dword ptr ss:[ebp-24]
004B4461 . 50 push eax
004B4462 . 52 push edx
004B4463 . E8 7CF4F5FF call WindowsS.004138E4 ; 读取注册表函数
004B4468 . 8945 90 mov dword ptr ss:[ebp-70], eax;alt+F9回到这里我也在摸索中发现本层数似乎没有关键跳转
于是回到上层函数有一句比较函数就是关键句了
0048AFE1 . 8D55 80 lea edx, dword ptr ss:[ebp-80]
0048AFE4 . 52 push edx ; /var18
0048AFE5 . 8D45 B0 lea eax, dword ptr ss:[ebp-50] ; |
0048AFE8 . 50 push eax ; |var28
0048AFE9 . FF15 4C114000 call near dword ptr ds:[<&MSVBVM60.__>; \关键!!!:字符串比较
0048AFEF . 8D4D E0 lea ecx, dword ptr ss:[ebp-20]
0048AFF2 8BF0 mov esi, eax ; eax == 0
0048AFF4 FFD3 call near ebx
0048AFF6 8D4D B0 lea ecx, dword ptr ss:[ebp-50]
0048AFF9 51 push ecx
比较返回的结果是0 代表不匹配
所以将 mov esi, eax 这句改为 mov esi, 1 但是这样所占字节数比较大 会把后面的ea ecx, dword ptr ss:[ebp-50] 覆盖 所以我改成这样了 lea esi, [eax+1]
这样esi=0+1=1了,这里请教下大牛们是不是有更好的方法呢?
保存下文件 运行出来就是注册版的了。
下载地址是http://www.exusoft.com/software/wsasetupsc.rar
跟踪过程你还会发现很多地方有明码。我的是:
0012F9F0 0015D42C UNICODE "cdf08c07044aee84a9ae02e46bc4f7f2"
可能不同的机器不一样,因为用户名我估计是这个程序用根据mac地址等东东算出来来了。
不允许更改!
如果有什么不对之处还请多多抛砖,我也是菜鸟,抛砖也有助我成长哈。。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)