第一次破解,找了个前人虐过的"荔枝微博相册下载助手V2.1"练手,分享经验
摸底[*]软件被前人评价为“软柿子”(发布的帖子)。
[*]启动后工具栏有“软件注册按钮”,点击后弹出窗口,标题标明“未注册”(图 1)。
[*]“导出列表”功能不可用,被提示弹窗代替(图 2)。
思路
[*]从注册窗口下手,看能不能找到注册码 / 已注册标志或判断是否注册这些东西。
[*]从尝试使用“导出列表”时的提示弹窗下手,找出哪儿禁用了这功能。
动手(思路1)
[*]OD 跑起来(原版程序),使用“中文搜索引擎”搜索字符串“未注册”,定位到调用代码(图 3);
[*]往上翻代码,发现有 41FFFD 处 cmp 和 je 可控制使用哪个字符串;
[*]41FFFD 处的 cmp 使用了ss: 这个变量,而 41FFE6 处写入了这个变量,
[*]继续往上翻代码,发现 41FFF4 处有子程序调用(程序清单 1);
[*]跳到函数里看看,代码不多,但是调用了个叫做 continueFreeData 的库函数,看名字像是释放资源的,先不管(程序清单 2);
[*]回头继续往上翻代码,41FFC9 处又是一个子程序调用,去看;
[*]百度了下, eax 还真是 x86 存返回值用的(程序清单 3),而这个函数里有两个返回分支,分别是 0 和 1, 编程经验告诉我,这函数很可能是返回 bool 类型的;
[*]回头看,在上面的函数调用完后,还真判断了 eax 里边的值(41FFCE),那么源程序很可能是 if(fun40F241()){} 这样的;
[*]上边的 test 完后,下一句是跳转 je, 看起来这个 je 使程序跳出了 41FFC6 到 41FFEF 之间的循环结构,那么源程序很可能是 if(fun40F241()){ break; } 这样的;
[*]再次去看 40F241 这个函数,40F24C 这里控制了是否继续捣腾 40F251 那里的 cmp;
[*]双击 40F24C 那里的 jnz ,改成 jmp;
[*]另存 exe(图 4, 图 5, 图 6);
[*]打开新 exe 测试;
[*]工具栏“软件注册”没了、注册窗口显示为“已注册”(图 7),导出列表窗口可以打开(图 8),貌似成功了;
[*]发帖收工。
后记
[*]这版本竟然过时失效了……
[*]软件功能挺不错的;
[*]注册费涨了,我¥%&……#¥#
[*]打开看了下 2.11 版,坑爹的已经不能搜索到中文字符串了,“导出列表”也不弹窗了,注册窗口也不显示没注册了@_@,用上面的方法摸了下,搞不定……
[*]晕ing……
图 1
图 2
图 3
图 4
图 5
图 6
图 7
图 8
程序清单 1
0041FFC6|> /8D4D C8 /lea ecx,
0041FFC9|. |E8 73F2FEFF |call litchi-w.0040F241
0041FFCE|. |84C0 |test al,al
0041FFD0|. |74 1F |je short litchi-w.0041FFF1
0041FFD2|. |8B4D D0 |mov ecx,
0041FFD5|. |8B41 FC |mov eax,dword ptr ds:
0041FFD8|> |395D CC |/cmp ,ebx
0041FFDB|. |74 0C ||je short litchi-w.0041FFE9
0041FFDD|. |3BC3 ||cmp eax,ebx
0041FFDF|. |75 05 ||jnz short litchi-w.0041FFE6
0041FFE1|. |FF4D CC ||dec
0041FFE4|.^|EB F2 |\jmp short litchi-w.0041FFD8
0041FFE6|> |885D 0B |mov byte ptr ss:,bl
0041FFE9|> |8B41 04 |mov eax,dword ptr ds:
0041FFEC|. |8945 D0 |mov ,eax
0041FFEF|.^\EB D5 \jmp short litchi-w.0041FFC6
0041FFF1|>8D4D C8 lea ecx,
0041FFF4|.E8 9A8BFEFF call litchi-w.00408B93
0041FFF9|.53 push ebx
程序清单 2
00408B93/$8B01 mov eax,dword ptr ds:
00408B95|.85C0 test eax,eax
00408B97|.74 16 je short litchi-w.00408BAF
00408B99|.83C0 34 add eax,0x34
00408B9C|.83CA FF or edx,-0x1
00408B9F|.F0:0FC110 lock xadd dword ptr ds:,edx
00408BA3|.75 0A jnz short litchi-w.00408BAF
00408BA5|.8B09 mov ecx,dword ptr ds:
00408BA7|.6A 08 push 0x8
00408BA9|.FF15 0CC34200 call dword ptr ds:[<&QtCore4.?continueFreeData@QMap>;QtCore4.?continueFreeData@QMapData@@QAEXH@Z
00408BAF\>C3 retn
程序清单 3
0040F241/$8B41 04 mov eax,dword ptr ds:
0040F244|.8D50 01 lea edx,dword ptr ds:
0040F247|.8951 04 mov dword ptr ds:,edx
0040F24A|.85C0 test eax,eax
0040F24C|.75 0C jnz short litchi-w.0040F25A
0040F24E|.8B41 08 mov eax,dword ptr ds:
0040F251|.3B41 0C cmp eax,dword ptr ds:
0040F254|.74 04 je short litchi-w.0040F25A
0040F256|.33C0 xor eax,eax
0040F258|.40 inc eax
0040F259|.C3 retn
0040F25A|>33C0 xor eax,eax
0040F25C\.C3 retn
我评分快不快,你的这篇文章,俺觉得应该放到原创区,期待更优秀的作品发布 smile1110 发表于 2015-6-20 05:40
我评分快不快,你的这篇文章,俺觉得应该放到原创区,期待更优秀的作品发布
{:1_903:}好快……
毕竟这版软件过时不能用了,所以发在这看各位点评~
改天再研究教程,摸摸那个新版的~ 好羡慕会技术的人才 smile1110 发表于 2015-6-20 05:40
我评分快不快,你的这篇文章,俺觉得应该放到原创区,期待更优秀的作品发布
老大 知道了 过来学习一下............ 感谢练手教程.. {:301_1000:}看看新版本行不行 学习一下,感谢分享
页:
[1]