标 题:  【原创】DIY新浪微博Android手机客户端(一)(二)(三)完
作 者: aqtata
时 间: 2011-03-23,00:26:14
链 接: http://bbs.pediy.com/showthread.php?t=131213

作者:地球仪
原文: http://hi.baidu.com/aqtata817/blog/i...87b8947bb.html

玩过新浪微博的人都知道,在每条微博的下方都会显示出该条微博来自于什么样的客户端
比如网页的、手机版的、Android的、iPhone的、iPad的、Symbian的、Kjava的以及很多第三方应用等等

本次教程的最终目的是“偷龙转凤”,通过修改Android客户端让其发表的微博显示“来自iPhone客户端”
iPhone多火呀!用iPhone多有面子呀!呵呵

第一件事还是准备好所需要的工具。工欲善其事,必先利其器!

【手机一部】
当然必须是Android系统的

【新浪微博Android客户端】
有了手机当然也要有客户端安装文件了,下载地址:http://t.sina.com.cn/mobile/android.php

【JDK】
后面要用到一些Java程序,所以必须安装Java环境
我这里装的1.6版,下载地址:http://www.java.net/download/jdk6/6u10/promoted/b32/binaries/jdk-6u10-rc2-bin-b32-windows-i586-p-12_sep_2008.exe

【ADB】
这个安装了Android的SDK都会有的,或着单独下载提取出来的:http://mobile.yesky.com/imagelist/2009/301/byk87b49p6gr.rar
这里面带有USB驱动,可以不用理会

【Tcpdump】
Linux下的网络监视工具,下载:http://www.uuroid.com/upload/tcpdump.zip

【dex2jar】
Java程序,可以把dex文件反编译成jar文件,下载:http://laichao.googlecode.com/files/dex2jar-0.0.7-SNAPSHOT.zip

【JD-GUI】
Java反编译程序,可以查看jar文件源码,下载:http://www.duote.com/soft/7793.html

【baksmali和smali】
解包打包java源码的工具,下载:http://code.google.com/p/smali/downloads/list

【IDA】
强大的反汇编工具,不用解释了吧,我这用的5.5版

【91手机助手】
主要用它来传输文件,当然你用豌豆荚等工具也是可以的

【EFFind】
文本搜索工具,这个不是必须的,只是有它的话能更快地从大量的源码中找到自己想要的数据

新浪微博开放了API接口,官方网站:http://www.weibo.cn/wiki/index.php
这里只需要简单地看看“授权机制说明”那部分,有两种授权方式
其中的Basic Authentication方式需要一个Appkey值,而新浪就是通过这个key来判断你是什么客户端
比如“优酷连接分享”的Appkey是2684493555,这个值在优酷网点击转贴到新浪微博后,在URL地址栏都能看到

再看浏览器的地址栏

也就是说,我们只要在客户端上修改对应的Appkey即可达到欺骗服务器的目的
这也是本教程的最终目的

不过后来分析发现,新浪官方的客户端是没有Appkey的,官方的客户端并不访问这个公开的API接口

而是有自己内部的访问接口,当然我们也不必去关心内部接口,因为我们不是要去做客户端

上次把准备工作做好了,这次直就接“开刀”
为了方便后面的操作,先把smali.jar、baksmali.jar、dex2jar放到C:\123目录下

1.寻找Appkey
将安装程序扩展名改为rar或zip都可以,只要能用工具解压就行,将其中的classes.dex文件拖出来放到C:\123目录下
进入CMD控制台,输入命令:dex2jar.bat classes.dex

成功后会在该目录下生成一个classes.dex.dex2jar.jar文件
再用JD-GUI打开它,选择“File - Save All Sources”将源码全部提取出来
提取出的文件是一个zip压缩包,将其解压到C:\123\yuanma

微博公开的API接口文档显示,如果使用Basic Authentication授权方式的话
必须在所有访问接口参数里带有“source=appkey”
我们这里打开EF Find搜索刚才解压出的所有源码文件,搜索字符为“source=”
很可惜,什么都没找到,再继续尝试“appkey”等字符,依然无所获

现在基本可以验证之前所说的,官方的客户端是访问的未公开的接口,不需要Appkey
为了找到接口地址和相关参数,我们需要在手机上抓包

2.寻找未公开接口及参数
这里要请出ADB和Tcpdump了,注意先把ADB目录添加到环境变量中去,省去了在控制台下输入路径的麻烦
打开91手机助手,把Tcpdump放到手机的/data/local目录下

但是它还没有权限运行,需要修改文件权限,我们要进入到adb shell
命令:adb shell chmod 777 /data/local/tcpdump

查看一下属性,已经有了所有权限

再进去手机的shell,进入刚才的目录下
adb shell
cd data
cd local

现在准备抓包了,在启动前先进入手机微博的登录窗口,随便输入帐号密码,不要登录
再回到控制台启动tcpdump,命令:./tcpdump -w dump.txt -s 0 -v port 80

tcpdump已经处于监听状态,回到手机里了,点“登录”
会发现在控制台窗口提示“Got 12” ,表示抓到了12个包
好了,让它停止工作,按下Ctrl + C键即可
用91手机助手刷新目录,可以看到多了个dump.txt文件

直接将其拖出来,这里说一下,这个文件应该是用Wireshark来查看的
之所以不用是因为这里并不需要很详细的信息,只需要看个大概就可以,用记事本打开
可以看到是以post方式提交数据,而且也确实如之前所说,不是访问的公开接口


u=帐号,p=密码,c应该是客户端标识符,s不详,ua应该只是统计数据用的
如果你会编程,这里最好做个程序测试下参数,我这里就直接说测试结果了
u,p,c,s参数是必须的,否则就登录不成功
尝试把c参数改为“iphone”,但是也无法登录成功,所以s参数应该是通过标识计算出来的

3.解密S参数
我们这里再回到第一步,从源码中找线索,打开EF Find搜索“login.php”,果然,找到一个
仔细看看代码,发现将用户名+密码作为参数传递给calculateS函数了

跟踪calculateS函数,可以看出没有复杂的加密,只是MD5加密了下,然后固定的取出几个字符作为S参数
而S参数也要和C参数对应才行,服务器会效验

到这里,关于客户端标识加密的方法知道了,我们还要将其改为iPhone的
下篇再讨论如何获取iPhone的Key及如何修改Android客户端

1.寻找iPhone的Key
iPhone的安装包为ipa格式,官方并不提供ipa文件下载
我这里找到的一个地址:http://3g.sina.com.cn/tv/soft/weibo/weibo_10243010.ipa
用IDA打开ipa文件,有很多文件,我们点击Size排序一下,选择最大的那个Weibo

按下Shift+F12调出字符串窗口,设置过滤字符类型,细心找下就能发现一个类似Key的字符

经过测试后,确定该字符串正是iPhone的Key

2.重建Android客户端
我们现在要做的就是将Android客户端中的Key替换掉,再将“android”字符替换为“iphone”
还记得第二篇里提取出的classes.dex文件吗?这次再用baksmali.jar将其反编译
进入控制台,输入:java -jar baksmali.jar -o C:\123\out classes.dex

这时C:\123目录下又多出了个out目录,其中就是反编译出的源码
我们用EF Find搜索这个目录,搜索Android的Key和替换为iPhone的Key
搜索标识字符“"android"”替换为“"iphone"”,注意有引号,这样才表示是一个字符串
修改好后再次进入控制台,输入命令:java -jar smali.jar C:\123\out -o C:\123\_classes.dex

成功后,会多出一个_classes.dex文件,改名为classes.dex后覆盖到客户端安装包里并删除META-INF文件夹
但是这个安装包并不能成功安装,因为文件已经被修改,需要重新进行签名

我们把这个安装包改名为jj.apk放到Auto-sign目录下,双击Signapk.bat即可
稍等一会,目录下会生成签名后的apk安装包,这就是最终的修改后的Android客户端了
(当然这里并不一定要用Auto-sign,别的apk签名工具都可以)

最后,我们先将手机上的客户端卸载掉,再安装这个修改后的客户端并测试

看看下方显示的“来自iPhone客户端”,成功啦!

最后提一下iPad,这个并没有访问内部接口,而是访问的公开接口,Appkey是2849184197
好了,教程到这里就全部结束了,谢谢!

DIY新浪微博Android手机客户端相关推荐

  1. 乐视android版本怎么升级,乐视网android手机客户端升级推出V2.0版

    乐视网 android手机客户端V2.0版--"乐视影视"正式发布,据乐视网运营副总裁高飞介绍,"V2.0版是早期发布的乐视网android手机客户端V1.5版的升级版本 ...

  2. 乐视android版本怎么升级,乐视网android手机客户端升级

    3月31日消息,乐视网android手机客户端V2.0版--"乐视影视"正式发布,据乐视网运营副总裁高飞介绍,"V2.0版是早期发布的乐视网android手机客户端V1. ...

  3. Android之使用HttpPost提交数据到服务器(Android手机客户端和后台服务器交互)

    这是一个小型的数据交互案例,即Android手机客户端和后台服务器交互(数据库mysql) 服务器端 首先服务器端数据库(用户名root密码123456),db_student.sql数据库表user ...

  4. android团购客户端,领团网团购导航Android手机客户端获机锋网力推

    近日,领团网(www.lingtuan.com)推出的Android团购导航手机客户端1.1版本登陆国内最具影响力的Android交流平台机锋网,作为国内团购导航权威,领团网手机客户端获机锋网力推,绚 ...

  5. 浅谈android手机客户端开发

    广州手机app客户端开发公司[启汇网络]企业开始注重Android手机客户端开发,源于android手机市场的庞大. 从android手机数量上看,三星无疑是推出 Android 移动设备最多的公司, ...

  6. 百度ting!正式发布beta版Android手机客户端

    近日,百度ting!正式发布了beta版Android手机客户端,凭借着百万级的正版资源,让用户每天都徜徉于海量音乐之海,感受音乐的有"声"力量.在功能.性能.服务及其他细节方面, ...

  7. 无线智能插座Android手机客户端软件主控制MainActivity代码实现

    该无线智能插座Android手机客户端软件主控制MainActivity在文件中的位置如下图所示,MainActivity是Android手机客户端软件实现用户注册.登录.智能控制插座等功能的代码实现 ...

  8. 无线智能插座的Android手机客户端软件界面开发

    该无线智能插座的Android手机客户端软件利用Android Studio开发工具进行实战开发,其开发详细的实现过程如下. 首先如下图所示,找到manifests文件下的AndroidManifes ...

  9. 无线智能插座Android手机客户端软件安装

    该无线智能插座的Android手机客户端软件的详细安装过程如下所示(以博主的nova5i手机为例): (1)首先打开Android Studio开发工具中的工程开发项目 (2)利用手机充电数据线,将充 ...

  10. 无线智能插座Android手机客户端软件展示

    最后,该无线智能插座的Android手机客户端软件展示图如下图所示:

最新文章

  1. .NET精品文章系列(二)
  2. (转)Objective-C Autorelease Pools(自动释放池)详解
  3. 计算星期c语言编码,[转载]计算任何一天是星期几的C语言源代码.
  4. GitLab结合Eclipse的简单使用 - 20190211
  5. win7锁定计算机会断网吗,win7系统如何设置电脑定时断网
  6. BZOJ3489 A simple rmq problem 【可持久化树套树】*
  7. 用户表如何区分普通用户和管理员_Gate.io 比特百科:什么是ETH 2.0及普通用户如何参与ETH 2.0质押挖矿...
  8. (priority_queue)自定义优先级
  9. 几种Intent 的用法
  10. 关于模型转向自然化思考
  11. React开发者工具 React Developer Tools 的下载
  12. 正整数m的百位数字python_求正整数m的百位数字
  13. 不同工资的男生睡前在想什么 vs 不同工资的女生睡前在想什么
  14. 如何快速打造一个高权重的短视频账号?短视频运营推广日记(2)
  15. 维护一个大型开源项目,例如vscode是怎样的体验?
  16. Idea创建一个java项目
  17. python里的π怎么输入_【后端开辟】python里的π怎样输入
  18. 荣耀x10max能否升级鸿蒙,坐拥豪华配置:荣耀X10 Max成今年唯一5G大屏手机
  19. 来,打一下五笔的字根表
  20. 计算机应用基础.ppt,计算机应用基础.ppt

热门文章

  1. NLP实战之基于LSTM的诗歌生成器
  2. Oracle隐含参数查看
  3. python 隐含波动率_python - QuantLib XL隐含波动率 - 堆栈内存溢出
  4. matlab 安装 提取错误,安装时 提取文件错误
  5. 重装系统,只需一行命令,一键激活win10家庭版。清理电脑缓存垃圾。
  6. 什么是广域网?它的特点以及与局域网的不同点是什么?
  7. webflux+r2dbc 实现响应式导出csv格式文件
  8. 超详细的python搭建区块链(下)
  9. 安卓开发2019年终总结(写的很水,千万别打开)
  10. 本地 Git 文件夹显示绿色标识