快播资源哪里跑(逆向)

嗨,大家好,逆向学习有那么几天了,得有点小产品吧,哈哈……,现在把逆向快播的经验贴出来,大家技术交流啊,对了,只是技术交流啊,其它的与我无关…。

快播播放器里面有三个文件,我们需要用到,为什么呢?自己看吧,因为快播是p2p机制的传输协议,所以我们只要快播涉及p2p的软件块就行了。

好了,以下是部分分析,聪明的你们一定会摸索出他们的规律(主要是获取任务的信息),主要代码已经打包了哦。

有图有真相……



成功的应用…






先贴出OD加载快播时逆向的分析吧

加载时触发

0049ECF9 |. 8B0D 28835600 mov ecx, dword ptr [568328] ;调用 568328 加载时触发 1

0049ECFF |. 3BCBcmp ecx, ebx ; 判断 dd_568328 是否为零

0049ED01 |. 74 04je short 0049ED07

0049ED03 |. 8B01mov eax, dword ptr [ecx]

0049ED05 |. FF10call dword ptr [eax] ; 调用 dd_568328 ;无参

直接调用 _InitQvodNet


0049F444 |. 8B0D 28835600 mov ecx, dword ptr [568328] ;调用 568328 加载时触发 2

0049F44A |. 85C9test ecx, ecx

0049F44C |. 74 55je short 0049F4A3

0049F44E |.8B01 mov eax, dword ptr [ecx]

0049F450 |. 56push esi ;FFFFFFF

0049F451 |. FF50 40call dword ptr [eax+40] ; 一个参数

传递一个参数为 FFFFFFF的值 给函数 call dword ptr [eax+40]

返回值为零

0049EDA7 |. 8B0D 28835600 mov ecx, dword ptr [568328] ;调用 568328 加载时触发 3

0049EDAD |. 8B11mov edx, dword ptr [ecx]

0049EDAF |. 53push ebx ;ebx=0

0049EDB0 |. 50push eax ; F:\Media\

0049EDB1 |. FF52 0Ccall 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 |. 8B01mov eax, dword ptr [ecx]

00430948 |. 83C4 0Cadd esp, 0C

0043094B |. 8D5424 20lea edx, dword ptr [esp+20]

0043094F |. 52push edx ;未知

00430950 |. FF7424 18push dword ptr [esp+18] ;未知 但数值显示为256

00430954 |. 56push esi ;esi=DE4AB6647FA65E303165CACDCEAB741147387B07

00430955 |. FF50 48call dword ptr [eax+48] ;三个参数

连接触发

0042FA84 |. 8B0D 28835600 mov ecx, dword ptr [568328] ;调用 568328 连接触发

0042FA8A |. 8B11mov edx, dword ptr [ecx]

0042FA8C |. 57push edi ;edi=0

0042FA8D |. 83C0 04add eax, 4

0042FA90 |. 50push eax ;eax=hash=DE4AB6647FA65E303165CACDCEAB741147387B07

0042FA91 |. FF52 28call dword ptr [edx+28] ;两个参数

断开触发

0042FA9C |. 8B0D 28835600 mov ecx, dword ptr [568328] ;断开触发

0042FAA2 |. 8B11mov edx, dword ptr [ecx]

0042FAA4 |. 57push edi ;edi=0

0042FAA5 |. 83C0 04add eax, 4

0042FAA8 |. 50push eax ;hash=DE4AB6647FA65E303165CACDCEAB741147387B07

0042FAA9 |. FF52 24call dword ptr [edx+24] ;两个参数

修改路径触发

00491226 |. 8B0D 28835600 mov ecx, dword ptr [568328] ;调用 568328 修改路径触发

0049122C |. 85C9test ecx, ecx

0049122E |. 74 08je short 00491238

00491230 |. 8B1Bmov ebx, dword ptr [ebx]

00491232 |. 8B01mov eax, dword ptr [ecx]

00491234 |. 53push ebx ;//路径

00491235 |. FF50 18call dword ptr [eax+18] ;一个参数

全部连接触发

004AA8CE |. 8B0D 28835600 mov ecx, dword ptr [568328] ;全部连接触发调用 568328

004AA8D4 |. 83C4 0Cadd esp, 0C

004AA8D7 |. 3BCBcmp ecx, ebx

004AA8D9 |.^ 0F84 3CE4FFFF je 004A8D1B

004AA8DF |.8B01 mov eax, dword ptr [ecx] ;

004AA8E1 |. 6A 01push 1 ; 估计个数

004AA8E3 |. 8D9424 380A00>lea edx, dword ptr [esp+A38]

004AA8EA |.52 push edx ; 0

004AA8EB |. FF50 28call dword ptr [eax+28] 两个参数


//全部断开触发

004AA924 |. 8B0D 28835600 mov ecx, dword ptr [568328] ;调用 568328 //全部断开触发

004AA92A |. 83C4 0Cadd esp, 0C

004AA92D |. 3BCBcmp ecx, ebx

004AA92F |.^ 0F84 E6E3FFFF je 004A8D1B

004AA935 |. 33C0xor eax, eax

004AA937 |.833D E48D5600>cmp dword ptr[568DE4], 1

004AA93E |. 6A 01push 1

004AA940 |. 0F9FC0setg al

004AA943 |. 8D9424 380A00>lea edx, dword ptr [esp+A38]

004AA94A |. 52push edx =0

004AA94B |. A3 4C875600mov dword ptr [56874C], eax

004AA950 |. 8B01mov eax, dword ptr [ecx]

004AA952 |. FF50 24call dword ptr [eax+24] ; 全部断开 两个参数


删除任务触发

0042FE34 |. 8B0D 28835600 mov ecx, dword ptr [568328] ;调用 568328 删除任务触发

0042FE3A |. FF75 A4push dword ptr [ebp-5C] ;ebp-5c=hash=DE4AB6647FA65E303165CACDCEAB741147387B07

0042FE3D |. 8B01mov eax, dword ptr [ecx]

0042FE3F |. FF50 20call dword ptr [eax+20] ;一个参数


播放触发

0042F3DC |> /8B0D 28835600 /mov ecx, dword ptr [568328] ;调用 568328 播放触发

0042F3E2 |. |8B7424 2C |movesi, dword ptr [esp+2C]

0042F3E6 |. |8B01 |mov eax, dword ptr [ecx]

0042F3E8 |. |8D5424 18 |leaedx, dword ptr [esp+18] ;edx=77CF7094(ntdll.KiFastSystemCallRet)

0042F3EC |. |52 |push edx

0042F3ED |. |FF7424 14 |pushdword ptr [esp+14]

0042F3F1 |. |56 |push esi ;esi=DE4AB6647FA65E303165CACDCEAB741147387B07

0042F3F2 |. |FF50 3C |calldword 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 |. 8B01mov eax, dword ptr [ecx]

0042F0D9 |. 53push ebx ;ebx=0

0042F0DA |. 8D55 C4lea edx, dword ptr [ebp-3C]

0042F0DD |. 52push edx ;edx=0 有十个四字节数为零

0042F0DE |. 57push edi ;edi=qvod://189694296|DE4AB6647FA65E303165CACDCEAB741147387B07|你是我爱人_22.rmvb|

0042F0DF |. FF50 04call dword ptr [eax+4] ;三个参数

0042F163 |. 8B0D 28835600 mov ecx, dword ptr [568328] ;调用 dd568328 添加网络任务触发 顺序2

0042F169 |. 8B11mov edx, dword ptr [ecx]

0042F16B |. 50push eax ;估计 某内存块地址 因为为初始化

0042F16C |. 8945 C0mov dword ptr [ebp-40], eax

0042F16F |. 8D45 C4lea eax, dword ptr [ebp-3C]

0042F172 |. 50push eax ;eax=DE4AB6647FA65E303165CACDCEAB741147387B07

0042F173 |. FF52 44call dword ptr [edx+44] ;两个参数

00430940 |. 8B0D 28835600 mov ecx, dword ptr [568328] ;调用 dd568328 添加网络任务触发 顺序3

00430946 |. 8B01mov eax, dword ptr [ecx]

00430948 |. 83C4 0Cadd esp, 0C

0043094B |. 8D5424 20lea edx, dword ptr [esp+20]

0043094F |. 52push edx ;未知

00430950 |. FF7424 18push dword ptr [esp+18] ;未知 但数值显示为256

00430954 |. 56push esi ;esi=DE4AB6647FA65E303165CACDCEAB741147387B07

00430955 |. FF50 48call 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值、路径、影片名、文件大小、已下载大小、是否下载……等等),每个任务都有,只是要懂的这个任务类的结构大小,就好定位了,源码已经写好了。

intCTestQvodDlg::GetTaskInfo(int *pLength,int *task)

//点击连接 里面有测试MD5值

在项目中有文件videolist.db 里面有很多测试的任务,你们可以了解下。其它的就说了,详细看代码哟。


下载地址:http://download.csdn.net/detail/banketree/4416468

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值