本文仅供学习研究使用,请勿用于非法用途
gSyncit是一款可以将Google Calendar和Outlook进行双向同步的软件,支持手动同步和定时自动同步,软件利用Google和Outlook提供的API做成,软件的主页是http://www.daveswebsite.com/software/gsync/,煎蛋上提供了一篇介绍gSyncit的文章,如果需要可以看看这里。
我是在水木社区的某内部版面上看到有人求这个软件的破解,就自己下载下来试了一下,没有太仔细看,花了10分钟搞定之,现在把破解的过程简单写写。
这个软件是用.Net写的,运行需要.Net Framework 2.0的支持,用Reflector打开,软件作者超级厚道,居然没用混淆化,呵呵。不多说了,判断是否注册在这里:
这里可以看出来,注册码存储在HKCU\Software\gSyncit下的键值为RegCode里。继续往下跟,可以知道最终调用的gsyncext.dll里的一个叫GetOutlookItem的导出函数,通过这个函数来判断是否注册。因此,用IDA先分析一下gsyncext.dll,然后再用OD的LoadDLL来调试之。调试的方法就不说了,直接来到关键的地方:
1000144E |. 8D50 01 lea edx, [eax+1] ; 注册码
10001451 |> 8A08 /mov cl, [eax]
10001453 |. 83C0 01 |add eax, 1
10001456 |. 84C9 |test cl, cl
10001458 |.^ 75 F7 \jnz short 10001451
1000145A |. 2BC2 sub eax, edx
1000145C |. 8D9424 54020000 lea edx, [esp+254]
10001463 |. 52 push edx
10001464 |. 50 push eax
10001465 |. 56 push esi
10001466 |. 8D4C24 1C lea ecx, [esp+1C]
1000146A |. E8 F10C0000 call 10002160 ; 把注册码的前20位进行Base64编码
继续往下看,
10001471 |. 8D48 01 lea ecx, [eax+1] ; 关键字符串gSyncOutlookAddinv1
10001474 |> 8A10 /mov dl, [eax]
10001476 |. 83C0 01 |add eax, 1
10001479 |. 84D2 |test dl, dl
1000147B |.^ 75 F7 \jnz short 10001474
1000147D |. 2BC1 sub eax, ecx
1000147F |. 8D4C24 60 lea ecx, [esp+60]
10001483 |. 51 push ecx
10001484 |. 50 push eax
10001485 |. 57 push edi
10001486 |. 8D4C24 1C lea ecx, [esp+1C]
1000148A |. E8 D10C0000 call 10002160 ; 关键字符串进行Base64编码
再往下,来到这里:
100014AA |. 50 push eax
100014AB |. 8D4C24 70 lea ecx, [esp+70]
100014AF |. 51 push ecx
100014B0 |. 8D9424 68020000 lea edx, [esp+268]
100014B7 |. 52 push edx
100014B8 >|. 8D8424 60040000 lea eax, [esp+460]
100014BF |. 68 E8750210 push 100275E8 ; ASCII "%s/t%s/t%i"
100014C4 |. 50 push eax
100014C5 |. E8 A8170100 call <_sprintf>
这里将两组Base64编码进行组合,再往下来:
100014DA |. 51 push ecx
100014DB |. 8D4C24 28 lea ecx, [esp+28]
100014DF |. E8 DC180000 call 10002DC0 ; MD5_Init
100014E4 |. 8D4C24 24 lea ecx, [esp+24]
100014E8 |. E8 530F0000 call 10002440 ; 进行MD5编码
100014ED |. 8BD5 mov edx, ebp
100014EF |. 90 nop
100014F0 |> 8A08 /mov cl, [eax]
100014F2 |. 880A |mov [edx], cl
100014F4 |. 83C0 01 |add eax, 1
100014F7 |. 83C2 01 |add edx, 1
100014FA |. 84C9 |test cl, cl
100014FC |.^ 75 F2 \jnz short 100014F0
100014FE |. 55 push ebp
100014FF |. E8 34130100 call <__mbsupr> ; 转成大写字母
从上面的子程序中返回,来到比较的地方:
1000180D |. 52 push edx
1000180E |. E8 7D180100 call
总结一下,注册码应该是一个32字节长度的字符串,其前20位参与真码的演算,后面的进行验证,这样,就可以很容易得到的一组可用的注册码,将其写入注册表的特定位置就可以了。这里需要注意的是,调用sprintf时,%i似乎只有0的一种状态,我没有仔细看,如果发现有问题请联系我。
评论
速度真快!
ps: 你代码语法高亮用的是哪个插件?
coolcode插件
真赞啊~
写了个注册机,暂时就先不放出来了,如果你能进新水木的NewSoftclub版的话就可以下载
在水木社区看到地址,就过来随便看看。
好巧啊,我们竟然算是半个老乡。我是丹东的。呵呵……
祝你一切顺利! ^_^
呵呵,很高兴认识你……
我去过一次丹东呢,丹东和大连很近的
我很想用一下你的gSyncit注册机,可是在水木没有找到,不知道能否发给我一份呢?
忘了我的电邮是cn.jeff.lee#gmail.com,谢谢!
不是有一个可用的注册码吗,呵呵,用那么就可以呀……
不过还是把keymaker发给你吧,不要外传
请问这款软件有没有后门程序?隐私保护怎么样?还有最新版本好像不注册也可以用了。如果有可能,请给我也发一份注册码,谢谢。
你问的问题我都不知道,这不是我所关心的。
注册码的话上面提供了,而且注册算法也说的很清楚了。你可以自己按照注册算法编个注册机,但更好的做法应该是购买正版
好像已经注册上去了,谢谢你了。至于注册机,我对破解没有什么了解,看看教程再说吧。正版,曾经有冲动要买,:)
不必客气
你好。我遇到个很奇怪的问题。开始安装以后,就跳出来一个错误,于是安装就停止了。
具体的话是:
The installer was interrupted before gSyncit could be installed.You need to restart the installer to try again.
但是我试了好几次都还是一样的问题。
抱歉,我也没遇到过。
Decompiling software and giving out a registration is illegal.
Steeling software is illegal. This is a clear attempt to give away something for free and not to educate.
对不起楼上的那位,按照您的说明,我把可用的注册码删掉了,但是我想说的是,逆向分析软件目前在国内并不是违法的,所以这篇文章并没有什么问题,我就先不删了哈。
先谢谢了!
可以发个KEY给我吗?十分感谢!
mousewolf gmail.com
明明有注册机,自己搜索一下再要...