找回密码
 加入
搜索
查看: 4192|回复: 2

[原创] 酷我音乐盒内存地址(更新中……)

[复制链接]
发表于 2010-11-6 23:47:44 | 显示全部楼层 |阅读模式
本帖最后由 helloxaj 于 2010-11-10 14:25 编辑

酷我音乐盒,仅限版本:v3.2.0.2,发布日期:2010.9,即金秋版,目前最新版
打算编个完美的酷我MV下载器,正在进行内存地址的查找。
数据正在更新中,如果有兴趣大家帮忙一块找找,以下是测试平台的源码,适合winxp、 win7操作系统,适合x86、x64平台。
最后,说明一下,这个下载器会永远开源,直到酷我音乐盒软件自身开启了MV的多线程下载的功能。

类型                                     基址                                  一级偏移                                  二级偏移

playercore.dll                                0x007DBBD0                         0x00000014                           -0x000156A8

播放中媒体已下载百分比               playercore.dll                           0x000157B0                                    NULL

播放中媒体已下载字节数               playercore.dll                           0x00015720                                    NULL

播放中媒体文件大小总字节数            playercore.dll                           0x0001571C                                    NULL

MV播放状态                          0x00821598                            0x0000000C                                    NULL
(停止:0 缓冲:1 播放:2 暂停:3)

音量百分数                         0x007DE754                         0x000002B4                                          NULL

启动静音                           0x007DE754                         0x000002B0                                          NULL
(未启动:0 启动:1)

窗口状态                           0x7C2206DC                         NULL                                                     NULL
(普通:15 迷你模式:7(不定) 最小化:135(不定))
#RequireAdmin
Opt("WinTitleMatchMode",2)



$pid=WinGetProcess("酷我音乐盒","")
$handle=_MemoryOpen($pid)

$a=0x05c3574c                          ;<======基址
$a=_MemoryRead("0x"&Hex($a),$handle)
$a+=0x00000008                         ;<======一级偏移
$a=_MemoryRead("0x"&Hex($a),$handle)
$a+=0x00000104                         ;<======二级偏移
$a=_MemoryRead("0x"&Hex($a),$handle)
MsgBox(0,"output:",$a)




Func _MemoryOpen($iv_Pid, $iv_DesiredAccess = 0x1F0FFF, $if_InheritHandle = 1)

If Not ProcessExists($iv_Pid) Then
SetError(1)
Return 0
EndIf

Local $ah_Handle[2] = [DllOpen("kernel32.dll")]

If @Error Then
SetError(2)
Return 0
EndIf

Local $av_OpenProcess = DllCall($ah_Handle[0], "int", "OpenProcess", "int", $iv_DesiredAccess, "int", $if_InheritHandle, "int", $iv_Pid)

If @Error Then
DllClose($ah_Handle[0])
SetError(3)
Return 0
EndIf

$ah_Handle[1] = $av_OpenProcess[0]
Return $ah_Handle

EndFunc

;=================================================================================================
Func _MemoryRead($iv_Address, $ah_Handle, $sv_Type = "dword")

If Not IsArray($ah_Handle) Then
SetError(1)
Return 0
EndIf

Local $v_Buffer = DllStructCreate($sv_Type)

If @Error Then
SetError(@Error + 1)
Return 0
EndIf

DllCall($ah_Handle[0], 'int', 'ReadProcessMemory', 'int', $ah_Handle[1], 'int', $iv_Address, 'ptr', DllStructGetPtr($v_Buffer), 'int', DllStructGetSize($v_Buffer), 'int', '')


If Not @Error Then
Local $v_Value = DllStructGetData($v_Buffer, 1)
Return $v_Value
Else
SetError(6)
Return 0
EndIf

EndFunc

;=================================================================================================
Func _MemoryClose($ah_Handle)

If Not IsArray($ah_Handle) Then
SetError(1)
Return 0
EndIf

DllCall($ah_Handle[0], "int", "CloseHandle", "int", $ah_Handle[1])
If Not @Error Then
DllClose($ah_Handle[0])
Return 1
Else
DllClose($ah_Handle[0])
SetError(2)
Return 0
EndIf

EndFunc
发表于 2011-9-3 16:37:46 | 显示全部楼层
请问这位兄弟,你能告诉我那些类型的基址是怎么查找出来的么?
发表于 2012-3-20 02:48:58 | 显示全部楼层
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-28 00:10 , Processed in 0.096685 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表