快播资源:快播资源哪里跑(逆向) 2024-04-25 04:39:37 0 0 嗨,大家好,逆向学习有那么几天了,得有点小产品吧,哈哈……,现在把逆向快播的经验贴出来,大家技术交流啊,对了,只是技术交流啊,其它的与我无关…。 快播播放器里面有三个文件,我们需要用到,为什么呢?自己看吧,因为快播是p2p机制的传输协议,所以我们只要快播涉及p2p的软件块就行了。 好了,以下是部分分析,聪明的你们一定会摸索出他们的规律(主要是获取任务的信息),主要代码已经打包了哦。 有图有真相…… 成功的应用… 先贴出OD加载快播时逆向的分析吧 加载时触发 0049ECF9 |. 8B0D 28835600 mov ecx, dword ptr [568328] ; 调用 568328 加载时触发 1 0049ECFF |. 3BCB cmp ecx, ebx ; 判断 dd_568328 是否为零 0049ED01 |. 74 04 je short 0049ED07 0049ED03 |. 8B01 mov eax, dword ptr [ecx] 0049ED05 |. FF10 call dword ptr [eax] ; 调用 dd_568328 ;无参 直接调用 _InitQvodNet 0049F444 |. 8B0D 28835600 mov ecx, dword ptr [568328] ; 调用 568328 加载时触发 2 0049F44A |. 85C9 test ecx, ecx 0049F44C |. 74 55 je short 0049F4A3 0049F44E |. 8B01 mov eax, dword ptr [ecx] 0049F450 |. 56 push esi ;FFFFFFF 0049F451 |. FF50 40 call dword ptr [eax+40] ; 一个参数 传递一个参数为 FFFFFFF的值 给函数 call dword ptr [eax+40] 返回值为零 0049EDA7 |. 8B0D 28835600 mov ecx, dword ptr [568328] ; 调用 568328 加载时触发 3 0049EDAD |. 8B11 mov edx, dword ptr [ecx] 0049EDAF |. 53 push ebx ;ebx=0 0049EDB0 |. 50 push eax ; F:\Media\ 0049EDB1 |. FF52 0C call dword ptr [edx+C] ; 调用dd_568328+c函数 0049EDB4 |> 8B35 34A35100 mov esi, dword ptr[<&KERNEL32.GetLogi>; kernel32.GetLogicalDriveStringsW 两个参数 初始化路径函数 dword ptr [edx+c]("F:\Media\",0) 0049EE26 |. 8B0D 28835600 |mov ecx, dword ptr [568328] ; 调用 568326 加载时触发 4 0049EE2C |. 8B01 |mov eax, dword ptr [ecx] 0049EE2E |. 53 |push ebx ebx=0 0049EE2F |. 56 |push esi ;路径=F:\Media\ 0049EE30 |. FF50 0C |call dword ptr [eax+C] ; 初始化下载路径吧 两个参数 初始化路径 0042D6FF |. 8B0D 28835600 ||mov ecx, dword ptr [568328] ; 调用 568326 加载时触发 5 0042D705 |. 8D5424 10 ||lea edx, dword ptr [esp+10] 0042D709 |. 52 ||push edx ;weizhi 0042D70A |. 8D5424 34 ||lea edx, dword ptr [esp+34] 0042D70E |. 8BF8 ||mov edi, eax 0042D710 |. 52 ||push edx ;weizhi 0042D711 |. 897424 38 ||mov dword ptr [esp+38], esi 0042D715 |. 8B01 ||mov eax, dword ptr [ecx] 0042D717 |. 57 ||push edi 0042D718 |. FF50 30 ||call dword ptr [eax+30] ;三个参数 循环触发 获得任务个数 以及某数值 00430940 |. 8B0D 28835600 mov ecx, dword ptr [568328] ; 调用 dd568328 加载时触发 6 兼 添加网络任务触发 顺序3 00430946 |. 8B01 mov eax, dword ptr [ecx] 00430948 |. 83C4 0C add esp, 0C 0043094B |. 8D5424 20 lea edx, dword ptr [esp+20] 0043094F |. 52 push edx ;未知 00430950 |. FF7424 18 push dword ptr [esp+18] ;未知 但数值显示为256 00430954 |. 56 push esi ;esi=DE4AB6647FA65E303165CACDCEAB741147387B07 00430955 |. FF50 48 call dword ptr [eax+48] ;三个参数 连接触发 0042FA84 |. 8B0D 28835600 mov ecx, dword ptr [568328] ; 调用 568328 连接触发 0042FA8A |. 8B11 mov edx, dword ptr [ecx] 0042FA8C |. 57 push edi ;edi=0 0042FA8D |. 83C0 04 add eax, 4 0042FA90 |. 50 push eax ;eax=hash=DE4AB6647FA65E303165CACDCEAB741147387B07 0042FA91 |. FF52 28 call dword ptr [edx+28] ;两个参数 断开触发 0042FA9C |. 8B0D 28835600 mov ecx, dword ptr [568328] ;断开触发 0042FAA2 |. 8B11 mov edx, dword ptr [ecx] 0042FAA4 |. 57 push edi ;edi=0 0042FAA5 |. 83C0 04 add eax, 4 0042FAA8 |. 50 push eax ;hash=DE4AB6647FA65E303165CACDCEAB741147387B07 0042FAA9 |. FF52 24 call dword ptr [edx+24] ;两个参数 修改路径触发 00491226 |. 8B0D 28835600 mov ecx, dword ptr [568328] ; 调用 568328 修改路径触发 0049122C |. 85C9 test ecx, ecx 0049122E |. 74 08 je short 00491238 00491230 |. 8B1B mov ebx, dword ptr [ebx] 00491232 |. 8B01 mov eax, dword ptr [ecx] 00491234 |. 53 push ebx ;//路径 00491235 |. FF50 18 call dword ptr [eax+18] ;一个参数 全部连接触发 004AA8CE |. 8B0D 28835600 mov ecx, dword ptr [568328] ; 全部连接触发调用 568328 004AA8D4 |. 83C4 0C add esp, 0C 004AA8D7 |. 3BCB cmp ecx, ebx 004AA8D9 |.^ 0F84 3CE4FFFF je 004A8D1B 004AA8DF |. 8B01 mov eax, dword ptr [ecx] ; 004AA8E1 |. 6A 01 push 1 ; 估计个数 004AA8E3 |. 8D9424 380A00>lea edx, dword ptr [esp+A38] 004AA8EA |. 52 push edx ; 0 004AA8EB |. FF50 28 call dword ptr [eax+28] 两个参数 //全部断开触发 004AA924 |. 8B0D 28835600 mov ecx, dword ptr [568328] ; 调用 568328 //全部断开触发 004AA92A |. 83C4 0C add esp, 0C 004AA92D |. 3BCB cmp ecx, ebx 004AA92F |.^ 0F84 E6E3FFFF je 004A8D1B 004AA935 |. 33C0 xor eax, eax 004AA937 |. 833D E48D5600>cmp dword ptr[568DE4], 1 004AA93E |. 6A 01 push 1 004AA940 |. 0F9FC0 setg al 004AA943 |. 8D9424 380A00>lea edx, dword ptr [esp+A38] 004AA94A |. 52 push edx =0 004AA94B |. A3 4C875600 mov dword ptr [56874C], eax 004AA950 |. 8B01 mov eax, dword ptr [ecx] 004AA952 |. FF50 24 call dword ptr [eax+24] ; 全部断开 两个参数 删除任务触发 0042FE34 |. 8B0D 28835600 mov ecx, dword ptr [568328] ; 调用 568328 删除任务触发 0042FE3A |. FF75 A4 push dword ptr [ebp-5C] ;ebp-5c=hash=DE4AB6647FA65E303165CACDCEAB741147387B07 0042FE3D |. 8B01 mov eax, dword ptr [ecx] 0042FE3F |. FF50 20 call dword ptr [eax+20] ;一个参数 播放触发 0042F3DC |> /8B0D 28835600 /mov ecx, dword ptr [568328] ; 调用 568328 播放触发 0042F3E2 |. |8B7424 2C |mov esi, dword ptr [esp+2C] 0042F3E6 |. |8B01 |mov eax, dword ptr [ecx] 0042F3E8 |. |8D5424 18 |lea edx, dword ptr [esp+18] ;edx=77CF7094(ntdll.KiFastSystemCallRet) 0042F3EC |. |52 |push edx 0042F3ED |. |FF7424 14 |push dword ptr [esp+14] 0042F3F1 |. |56 |push esi ;esi=DE4AB6647FA65E303165CACDCEAB741147387B07 0042F3F2 |. |FF50 3C |call dword ptr [eax+3C] ;三个参数 循环触发 每0.2秒触发哟 0042D6A9 |. 8B0D 28835600 |mov ecx, dword ptr [568328] ; 调用 dd_568328 循环触发 每0.2秒触发哟 0042D6AF |. 69C0 54040000 |imul eax, eax, 454 0042D6B5 |. 8D5424 10 |lea edx, dword ptr [esp+10] ;任务个数 0042D6B9 |. 52 |push edx 0042D6BA |. 8D5424 34 |lea edx, dword ptr [esp+34] ;edx=330f 0042D6BE |. 52 |push edx ; 0042D6BF |. FF7424 1C |push dword ptr [esp+1C] ;hash zhi ? (ASCII"03C61BC8CE96CB5072C9E149DE7771C9D6A03E24") 0042D6C3 |. 894424 3C |mov dword ptr [esp+3C], eax 0042D6C7 |. 8B01 |mov eax, dword ptr [ecx] 0042D6C9 |. FF50 30 |call dword ptr [eax+30] ;三个参数 非常可疑 添加网络任务触发 0042F0D1 |. 8B0D 28835600 mov ecx, dword ptr [568328] ; 调用 dd568328 添加网络任务触发 顺序1 0042F0D7 |. 8B01 mov eax, dword ptr [ecx] 0042F0D9 |. 53 push ebx ;ebx=0 0042F0DA |. 8D55 C4 lea edx, dword ptr [ebp-3C] 0042F0DD |. 52 push edx ;edx=0 有十个四字节数为零 0042F0DE |. 57 push edi ;edi=qvod://189694296|DE4AB6647FA65E303165CACDCEAB741147387B07|你是我爱人_22.rmvb| 0042F0DF |. FF50 04 call dword ptr [eax+4] ;三个参数 0042F163 |. 8B0D 28835600 mov ecx, dword ptr [568328] ; 调用 dd568328 添加网络任务触发 顺序2 0042F169 |. 8B11 mov edx, dword ptr [ecx] 0042F16B |. 50 push eax ;估计 某内存块地址 因为为初始化 0042F16C |. 8945 C0 mov dword ptr [ebp-40], eax 0042F16F |. 8D45 C4 lea eax, dword ptr [ebp-3C] 0042F172 |. 50 push eax ;eax=DE4AB6647FA65E303165CACDCEAB741147387B07 0042F173 |. FF52 44 call dword ptr [edx+44] ;两个参数 00430940 |. 8B0D 28835600 mov ecx, dword ptr [568328] ; 调用 dd568328 添加网络任务触发 顺序3 00430946 |. 8B01 mov eax, dword ptr [ecx] 00430948 |. 83C4 0C add esp, 0C 0043094B |. 8D5424 20 lea edx, dword ptr [esp+20] 0043094F |. 52 push edx ;未知 00430950 |. FF7424 18 push dword ptr [esp+18] ;未知 但数值显示为256 00430954 |. 56 push esi ;esi=DE4AB6647FA65E303165CACDCEAB741147387B07 00430955 |. FF50 48 call dword ptr [eax+48] ;三个参数 看着上面的代码,是不是显得很无助啊?没事,接着看,我来讲解下原因。 快播启动时,加载了QvodNet.dll文件,该文件有什么用呢?答案是控制p2p资源下载以及限速的操作,上面逆向代码都是对这的分析,也就是说,只要围绕这它,你就掌握了逆向快播了,随时随地下载快播资源,包括最新的电影,具体操作请下载下载包,看代码吧。 代码部分讲解--- 启动时 //#ifdef _DEBUG cmd窗体 以后输出的信息都在这显示 AllocConsole(); freopen("CONOUT$","w+t",stdout); //#endif //为什么添加这段?防止快播自动下载更新。有些模块地址不一样,所以要禁止更新。 { TCHARpath[MAX_PATH] = {0}; ::GetModuleFileName(NULL,path,MAX_PATH); CStringstrUpdate(path); strUpdate.Replace(_T("TestQvod.exe"),_T("update.jpg")); ::CreateFile(strUpdate,GENERIC_READ,FILE_SHARE_READ,NULL, OPEN_ALWAYS,FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_HIDDEN,NULL); } 程序中有全局变量 BYTE*m_byteBuffer=NULL; //从内存中读出的消息全部放到这变量中(消息含有任务MD5值、路径、影片名、文件大小、已下载大小、是否下载……等等) HMODULEm_hMouleQvodNet; //句柄 DWORDm_dFunctionHandle,m_dHandle; //消息句柄 DWORDd_517864; //一个地址 //逆向快播的初始化 void CTestQvodDlg::OnInitQvodNet() //获得任务信息,获取任务个数,传参任务的MD5,返回值为零成功,其它不成功,成功时读取的信息有(消息含有任务MD5值、路径、影片名、文件大小、已下载大小、是否下载……等等),每个任务都有,只是要懂的这个任务类的结构大小,就好定位了,源码已经写好了。 int CTestQvodDlg::GetTaskInfo(int *pLength,int *task) //点击连接 里面有测试MD5值 在项目中有文件videolist.db 里面有很多测试的任务,你们可以了解下。其它的就说了,详细看代码哟。 下载地址:http://download.csdn.net/detail/banketree/4416468 收藏(0)