【文章标题】: 酷狗7 7.1.1.11072版本去广告
【文章作者】: 黑箜
【作者邮箱】: kong@shadowkong.com
【软件名称】: 酷狗7
【加壳方式】: Nothing found [Overlay] *
【使用工具】: PEID+OD+FILEMON+REGMON
【操作平台】: WIN-XP
【软件介绍】: G.CN 酷狗7
【作者声明】: 只是感兴趣,没有其他目的。请各位多多指教,希望版主能给激活码~
--------------------------------------------------------------------------------
初衷:昨天看书累了想听听歌,于是打开酷狗7 发现这播放器不错但是置顶那长幅广告好难看.于是就想把它去掉好了,网上说可以通过修改外部文件[skinres.skn]而实现,但我发现最新版的[skinres.skn]已经是经过加密处理的~[估计是酷狗看之前的版本去广告太简单]

既然此法行不通 那就自己想其他办法搞定吧~
第一步:用PEID查壳

PEID啥都没发现..但是LINKER INFO显示是9.0
我是初入门 这也不知道具体啥意思 反正按通常的步骤往下走~
第二步:既然网上说可以修改外部文件来实现,那就给我们一个信息就是:关于显示广告的参数可能保存在外部文件而非PE文件里面~所以这个时候用FILEMON工具监视一下:
FILEMON设置如下:

(具体操作参照老大们的<加密与解密>)
检测到的自我感觉有用的信息如下:
(1)酷狗7有个自我崩溃测试功能:[
跟楼的兄弟指出 这个是用来发给开发人员的 不是程序自我保护 谢谢指出
]

等会儿就会发现,这个自我崩溃的子功能会一定层度上保护了软件的被入侵或者被修改~
(2)酷狗7首先会读取
C:\Documents and Settings\计算机用户名\Application Data\KuGou7文件夹下的 配置文件 各种小图片 等
以及根目录下的文件等~包括之前提到的经过加密处理的[skinres.skn]
第三步:用REGMON工具(操作类似FILEMON)监控酷狗7的一系列注册表操作~
检测到的信息如下:
除了基本的配置信息之外,还有安装日期等,基本上没有异常
第四步:用OD直接反汇编试试(本人用的是虚拟机反汇编 因为现在有一些软件有很强的反OD检测 万一发现有INT3等中断指定加入就会自动死机或者自动崩溃,之前也发现的酷狗7有自我崩溃检查功能 所以用虚拟机比较方便(重启开机等))
经过10秒后 代码出来了 入口就是:
008BFA2F > $ E8 7F5D0100 call 008D57B3
008BFA34 .^ E9 79FEFFFF jmp 008BF8B2
008BFA39 $ C3 retn
008BFA3A /$ B8 01638D00 mov eax, 008D6301
008BFA3F |. A3 0432A300 mov dword ptr [A33204], eax
008BFA44 |. C705 0832A300>mov dword ptr [A33208], 008D59E8
008BFA4E |. C705 0C32A300>mov dword ptr [A3320C], 008D599C
008BFA58 |. C705 1032A300>mov dword ptr [A33210], 008D59D5
008BFA62 |. C705 1432A300>mov dword ptr [A33214], 008D593E
008BFA6C |. A3 1832A300 mov dword ptr [A33218], eax
008BFA71 |. C705 1C32A300>mov dword ptr [A3321C], 008D6279 ; 入口地址
008BFA7B |. C705 2032A300>mov dword ptr [A33220], 008D595A ; 入口地址
008BFA85 |. C705 2432A300>mov dword ptr [A33224], 008D58BC ; 入口地址
008BFA8F |. C705 2832A300>mov dword ptr [A33228], 008D5849 ; 入口地址
如果你经常反自己写的软件的话 会发现入口和自己写的软件不一样~进来就是一个CALL 然后就是JMP 猜测有可能是之前有代码加密 这个第一个CALL应该是代码解密~
(新手 妄自揣测 见笑~)
现在对我们的目的进行分析 我们的目的是要去掉酷狗上面那长长的恶心的广告:

因为有WIN32汇编 和16位汇编以及C的编程经验 所以我第一感觉这应该是一个位图处理,以及这是一个在线广告,(之前断网测试过 断网情况下 是显示不了GIF格式的广告的~)于是就想到了CreateFile BitBlt Revt Send CreateBitmap等几个函数~
于是查看所有函数调用 首先对所有BitBlt函数下断:(为什么先对BitBlt下断?因为..按函数排列后它在最前面 最容易找..见笑)~

之后在一个一个函数跟进去对函数操作的前面指令下断(方便观察参数入栈)
然后按F9让程序运行起来~
发现程序中断在此:[7C81EB33]
7C81EB2D FF15 0415807C call dword ptr [<&ntdll.RtlRaiseExcep>; ntdll.RtlRaiseException
7C81EB33 5E pop esi ; 07076750
7C81EB34 C9 leave
7C81EB35 C2 1000 retn 10
7C81EB38 85FF test edi, edi
仔细分析这并不是程序领空,并不用想太多 继续按F9 让程序继续走~
程序再次中断 此处发现是正好中断在BITBLT函数之前~:
005E874F |. 8B5424 1C mov edx, dword ptr [esp+1C] ;我下的断点~
005E8753 |. 8B4C24 20 mov ecx, dword ptr [esp+20]
005E8757 |. 2B4C24 18 sub ecx, dword ptr [esp+18]
005E875B |. 68 2000CC00 push 0CC0020 ; /ROP = SRCCOPY
005E8760 |. 6A 08 push 0 ; |YSrc = 0 (0.)
005E8762 |. 6A 08 push 0 ; |XSrc = 0 (0.)
005E8764 |. 8BD8 mov ebx, eax ; |
005E8766 |. 8B4424 30 mov eax, dword ptr [esp+30] ; |
005E876A |. 56 push esi ; |hSrcDC
005E876B 2BC2 sub eax, edx
[招生]科锐逆向工程师培训(2025年3月11日实地,远程教学同时开班, 第52期)!