|
[求助]Android网络协议破解
RSA 和RC4 不解释 |
|
[注意]Help !
顶一下, |
|
[求助]辅助挂机掉线?如何破?
什么游戏?我正在搞这个 |
|
谁知道好一点的免费域名申请
顶级域名才70块钱不到。 |
|
[求助]不修改系统时间,但让指定程序独到的系统时间是我指定的时间?
读取系统时间,无非就是那几个函数。 |
|
[求助]如何动态调试Android软件呢
唉。搞了大半天,都调试不了。出现这种问题 无法提交断点 LineBreakpoint MainActivity.smali : 32,原因是:在任何类之外设置了断点。 无效的 LineBreakpoint MainActivity.smali : 32 无法提交断点 LineBreakpoint MainActivity.smali : 34,原因是:在任何类之外设置了断点。 无效的 LineBreakpoint MainActivity.smali : 34 |
|
[求助]如何动态调试Android软件呢
非常感谢你,我下载来试试。 |
|
[求助]如何动态调试Android软件呢
我打不开卡。你没有复制漏拉? |
|
[求助]如何动态调试Android软件呢
或者介绍一下有什么调试工具呢 |
|
[招聘]初创安全公司招聘windows驱动开发工程师
北京,在广州就好 |
|
个人对论坛的一些看法
呵呵!你想得太理想了! |
|
[原创]YY登录协议流程解析
要写这篇文章估计要耗很长的时间,下次我先写Socket 网络连接YY的设计 先大概说一下YY的登录管理 YY的登录socket管理公用库为 netio.dll 管理Socket的方式为windows 的 IOCP技术 没有建立握手连接之前,采取的是Rsa非对称加密,服务器会利用客户端发送的Rsa公钥 加密即将发送给客户端的Rc4伪流媒体密码,该密码是对称加密的,从这以后,客户端和服务器段的通信都采取Rc4加解密。所以要分析协议,只需要设置断点在解密后和加密前的函数。就可以了 这里是解密的地址 |
|
[推荐]找工作。(安全相关)
为什么这些大牛,都是没有学历的? |
|
[原创]YY登录协议流程解析
YY 语音登录协议分析 摘要:本文档详细记录了YY语音登录按钮事件所触发的一系列调用和相应库文件函数的调用,并对函数和类结构进行重命名,以简便记忆该名称,更详细的内容请参考反汇编文件. 登录按钮事件: 用户在登录界面,填写用户名和密码,单击登录按钮则触发本事件 yymainframe.dll 1. 0x6253FA8A ,YYLoginWidget::on_loginButton_clicked(void) 1.1. 获取控件上输入,判断登录用户名和密码是否为空,为空则给出相应的提示,并退出本函数 1.2. 调用0x6250A673 AccountInfoManager::GetAccountInfo(class AccountInfo const &) 获取账户信息 1.3. 调用0x6253F521 YYLoginWidget::_loginWithAccountInfo(AccountInfo const &) 依据账户信息登录 2. 0x6253F521 YYLoginWidget::_loginWithAccountInfo(AccountInfo const &) 1.1. 调用 0x6252DF52 AccountInfo::GetUserName(QString const & )const 获取账户名称 1.2. 调用0x62513A13 QCoreApplication::isAccountLogined(class QString const &) 判断当前的账户是否依据登录 1.3. 调用 0x62513A1B QCoreApplication::isAccountStartLogin(class QString const &) 判断当前用户是否正在登录之中, 1.4. 调用 0x62513B63 QCoreApplication::makeAccountStartLogin(class QString const &) 通过调用DuiWinAPI::createMutex 创建互斥对象,标识当前用户正在登录 1.5. 调用 0x6250A39B AccountInfo::GetImStatus(void)const 获取IM 状态 (我在线 =00,游戏中= 05,离开 = 04,忙碌=03,隐身=02) 1.6. 调用0x6252DF52 AccountInfo::GetPassword(QString &) 获取加密过的密码 1.7. 调用 0x6252DF52 AccountInfo::GetUserName(QString const & )const 获取账户名称 1.8. 调用0x6253CAD2 YYLoginWidget::passportLogin(QString & UserName,String password &, enum IM_STATUS) 带加密过的密码用户登录 3. 0x6253CAD2 YYLoginWidget::passportLogin(QString & UserName,String password &, enum IM_STATUS) 1.1. 调用0x6371E52F,CPassportSingletonWrap::Reset(void) 登录重置 (bizcore.dll) 1.2. 调用0x6371E455 CPassportSingletonWrap::SetUserName(char * UserName) 设置登录名称 (bizcore.dll) 1.3. 调用0x6371E48F CPassportSingletonWrap::SetPassword(char * Password) 设置登录密码 (bizcore.dll) 1.4. 调用0x6371E4CB CPassportSingletonWrap::SetIMStatus(int IM_Status) 设置登录状态 ImStatus (bizcore.dll) 1.5. 调用 0x6371E4DF CPassportSingletonWrap::SetProductVersion( char * ProductVersion) 设置YY客户端版本号 “"6.0.0.1” (bizcore.dll) 1.6. 调用 0x6371E557 CPassportSingletonWrap::asyncLogin(void) 异步登录 (bizcore.dll) 4. 0x6371E557 CPassportSingletonWrap::asyncLogin(void) bizcore.dll 1.1. 调用0x6371E0B0 CPassportSingletonWrap::validateRealPassport(void) 当CPassportWrap 还没有创建时,则创建该对象,当该对象已经被创建时,则直接返回1 1.2. 调用 0x637190EA CPassportWrap::asyncLogin(void) 异步登录 5. 0x637190EA CPassportWrap::asyncLogin(void) 异步登录 1.1. 调用0x6370C597 CAsyncBase::Start(CMasterObject &,CObject &,void ** functionCallBack,int field,CObject &) 创建异步对象,并执行异步对象的主函数 6. 0x6370C597 CAsyncBase::Start(CMasterObject &,CObject &,void ** functionCallBack,int field,CObject &) 1.1. 调用0x6370C487 CAsync * CreateCAsync(CAsync & async,void ** functionCallBack,int field,CObject &) 创建CAsync 异步对象,返回值为CAsync对象的地址,当为登录的事件时CObject == CPassportWrap 对象 1.2. 调用0x6370CDDB sub_6370CDDB ,本函数把调用传给0x6370CB25 CBizDriverMT::doPostFnToBiz(void) 7. 0x6370CB25 CBizDriverMT::doPostFnToBiz(void) 1.1. 调用0x6370C216 CPostFnToBiz::CPostFnToBiz(int field1,CObject &,CBizDriverMT &,CAsync &,String,int field2,int field3) CPostFnToBiz 构造函数,当为登录消息时 CObject == CPassportWrap 对象 1.2. 调用0x6370C547 CPostFnToBiz::CopyCPostFnToBiz(CPostFnToBiz &) 拷贝函数 1.3. 把CPostFnToBiz对象赋值给 ThreadParamterInfo线程函数参数 1.4. 调用SetEvent 函数置为有信号hEvent 8. 0x6370CC03 CBizDriverMT::threadProc(void) 线程函数等待hEvent 事件句柄是否有消息,有消息则调用相应的处理方法 1.1. 调用0x6370BD72 WaitFnDeqOnBiz() 等待hEvent 是否有消息 1.2. 当消息是登录消息时,则调用0x63707439 CAsync::bizLogin(void), 1.3. bizLogin() 函数里面对 0x6371553B CPassportWrap::bizLogin(void)进行调用 9. 0x6371553B CPassportWrap::bizLogin(void) 1.1. 调用0x63531CE9,CLoginImp::Login(string UserName,string password,int Normal,int field1,int field2,int IM_Status,int yyLangNameID) 实现登录, UserName 为用户名, password 为用户密码, Normal 不为Email 则Normal = 1, IM_Status 为登录状态, yyLangNameID 为YY客户端语言版本代码 (login.dll) 10. 0x63531CE9 CLoginImp::Login(string UserName,string password,int Normal,int field1,int field2,int IM_Status,int yyLangNameID) 1.1. 调用0x635318A8 CLoginImp::doLogin(string UserName,string password,int Normal,int field1,int field2,int IM_Status,int yyLangNameID) 实现登录 11. 0x635318A8 CLoginImp::doLogin(string UserName,string password,int Normal,int field1,int field2,int IM_Status,int yyLangNameID) 1.1. 会在”C:\Documents and Settings\comba\Application Data\duowan\yy4.0\C__Program_Files_duowan_yy_” 文件夹创建运行记录 1.2. 调用protocol4.dll 库里面函数对发送的数据进行加密 1.3. 调用netio.dll 库的函数把加密过的数据发送到服务器,其中调用到系统API 为0x632017B2 WSASendTo (netio.dl)l 发送的数据包 39 00 00 00 01 14 00 00 C8 00 00 00 10 00 00 60 FF FF FF FF 09 00 69 6E 69 67 68 74 65 6C 66 00 00 04 08 00 00 01 00 00 00 00 00 00 00 01 00 00 00 B6 76 01 44 00 00 00 00 12. 未完待续 Enum ImStatus { 我在线 Online 00 游戏中 05 离开 04 忙碌 03 隐身 01 } AccountInfo { QString UserName //0x4,登录用户名称 QString Password //0x8,加密过的用户密码 Bool IsRememberPassword //0x0C,一个字节大小, 是否记住密码标识,1为记住,0为不记住, Bool IsAutoLogin //0x0D,一个字节大小, 是否自动登录,1为自动登录,0为不自动登录 ImStatus Status //0x10, 四个字节,用户状态 int Field //0x14, 四个字节 int Field //0x18, 四个字节 QString Field2 //0x1C, 四个字节 QString Field3 //0x20, 四个字节 QString Field4 //0x24, 四个字节 QString Field5 //0x28, 四个字节 Byte Field6 //0x2C, 一个字节 } YYLoginWidget { DuiLineEdit UserName_LineEdit //0x24,账户名称输入框 DuiLineEdit Password_LineEdit //0x28,密码输入框 CheckBox IsRememberPassword_CheckBox //0x2C,是否记住密码的CheckBox按钮 CheckBox IsAutoLogin_CheckBox //0x30,是否自动登录的CheckBox 按钮 AccountInfoManager *lpAccountInfoManager; //0x48, AccountInfoManager 对象 } AccountInfoManager { AccountInfo *lpAccountInfo //0x0C, AccountInfo 对象 } YYWindowManager { int MutexObject //0x0B8, 标识用户正在登录的互斥对象 } CPassportSingletonWrap { CPassportWrap * lpPassportWrap //0x584,CPassportWrap 对象 } CPassportSingletonWrap 成员函数列表 { CPassportSingletonWrap::SetUserName( char * Password ) //偏移地址 0x14, 设置登录名称 0x0x6371E455 CPassportSingletonWrap::SetPassword(char * Password) //偏移地址 0x1C, 设置登录密码 0x6371E48F CPassportSingletonWrap::SetIMStatus(int IM_Status) //偏移地址 0x28, 设置登录状态 IM_STATUS 0x6371E4CB CPassportSingletonWrap::SetProductVersion( char * ProductVersion) //偏移地址 0x2C, 设置YY客户端版本号0x6371E4DF CPassportSingletonWrap::Reset(void) //偏移地址 0x3C, 登录重置 0x6371E52F CPassportSingletonWrap::asyncLogin(void) //偏移地址 0x44, 异步登录 0x6371E557 } CPassportWrap 成员变量 { String UserName //0x6F4,用户名称 String Password // 0x72C,登录密码 String ProductVersion //0x748,YY客户端版本号 int ResetFlag //0x7B8,四个字节,重置标记 int IM_Status //0x7BC,四个字节,登录状态IMStatus } CPassportWrap 函数数组列表 { CPassportWrap::SetUserName(char * Password) //偏移地址 0x14, 设置登录名称 0x6370AFF0 CPassportWrap::SetPassword(char * Password) //偏移地址 0x1C, 设置登录密码 0x6370B01B CPassportWrap::SetIMStatus(int IM_Status) //偏移地址 0x28, 设置登录状态 IM_STATUS 0x6370B040 CPassportWrap ::SetProductVersion( char * ProductVersion) //偏移地址 0x2C, 设置YY客户端版本号 0x6370B04D CPassportWrap::Reset(int value) //偏移地址 0x3C, 登录重置,设置CPassportWrap对象偏移地址为0x7B8的内容 0x6370B07D CPassportWrap::asyncLogin(void) //偏移地址 0x44, 异步登录 0x637190EA } CAsync { //size = 0x18 HANDLE CAsyncVirtualFunction //0x0 ,四个字节,虚函数表 int RefNum //0x4,引用计数 CObject *lpCObject //0x8, CObject 对象 HANDLE *functionCallBack //0x10, 回调函数 int Field1 = 0x0 //0x14, } CPostFnToBiz { int RefNum //0x0,计数器 Byte field1 = 0x1 //0x4,一个字节 CObject CObject //0x8,四个字节 CBizDriverMT CBizDriverMT //0xC,CBizDriverMT 对象 CAsync CAsync //0x10,CAsync对象 string title //0x14, 当前调用的函数字符串 "CPassport::asyncLogin:350" int field2 = 0x01 //0x18, int field3 = 0x00 //0x1C, } NET_PROXY_INFO { 代理类型 代理IP地址 代理端口 代理用户名称 代理密码 } |
|
[原创]YY登录协议流程解析
排版好麻烦啊! |
|
|
|
|
操作理由
RANk
{{ user_info.golds == '' ? 0 : user_info.golds }}
雪币
{{ experience }}
课程经验
{{ score }}
学习收益
{{study_duration_fmt}}
学习时长
基本信息
荣誉称号:
{{ honorary_title }}
能力排名:
No.{{ rank_num }}
等 级:
LV{{ rank_lv-100 }}
活跃值:
在线值:
浏览人数:{{ visits }}
最近活跃:{{ last_active_time }}
注册时间:{{ user_info.create_date_jsonfmt }}
勋章
兑换勋章
证书
证书查询 >
能力值