cmheia 发表于 2015-6-20 03:25

第一次破解,找了个前人虐过的"荔枝微博相册下载助手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

我评分快不快,你的这篇文章,俺觉得应该放到原创区,期待更优秀的作品发布

cmheia 发表于 2015-6-20 12:26

smile1110 发表于 2015-6-20 05:40
我评分快不快,你的这篇文章,俺觉得应该放到原创区,期待更优秀的作品发布

{:1_903:}好快……
毕竟这版软件过时不能用了,所以发在这看各位点评~
改天再研究教程,摸摸那个新版的~

一块两毛五 发表于 2015-6-20 21:43

好羡慕会技术的人才

smile1110 发表于 2015-6-21 15:29

smile1110 发表于 2015-6-20 05:40
我评分快不快,你的这篇文章,俺觉得应该放到原创区,期待更优秀的作品发布

老大 知道了

只不过去是了 发表于 2015-6-22 09:20

过来学习一下............

zsf531 发表于 2015-6-22 09:44

感谢练手教程..

星晴18 发表于 2015-7-13 17:31

{:301_1000:}看看新版本行不行

XKQ 发表于 2015-7-13 17:42

学习一下,感谢分享

liang939558108 发表于 2017-2-24 10:42

页: [1]
查看完整版本: 第一次破解,找了个前人虐过的"荔枝微博相册下载助手V2.1"练手,分享经验