helloxaj 发表于 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 =

If @Error Then
SetError(2)
Return 0
EndIf

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

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

$ah_Handle = $av_OpenProcess
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, 'int', 'ReadProcessMemory', 'int', $ah_Handle, '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, "int", "CloseHandle", "int", $ah_Handle)
If Not @Error Then
DllClose($ah_Handle)
Return 1
Else
DllClose($ah_Handle)
SetError(2)
Return 0
EndIf

EndFunc

glkjxy 发表于 2011-9-3 16:37:46

请问这位兄弟,你能告诉我那些类型的基址是怎么查找出来的么?

whm123 发表于 2012-3-20 02:48:58

{:face (394):}
页: [1]
查看完整版本: 酷我音乐盒内存地址(更新中……)