qq悄悄话查看器-分析报告

来源:互联网 发布:办公软件2003官方下载 编辑:程序博客网 时间:2024/04/29 10:19

今天我的小网站出问题了,只好先写到博客了。

0x00 摘要

前两天有朋友在Q群里发一个QQ悄悄话查看器.apk,因为我之前有研究过,知道查看是不可能的,肯定是骗人的软件(当然了,其实当时我想的是,如果真的可以查看,我要看看他的原理是什么,我断定不可查看是因为:链接)

后来看到有人说,是一款恶搞的软件,很多人中招。

今天周六,看网上也没人分析,就抽时间分析了下。分析后发现……原来没人分析,是因为并没有分析的价值……

0x01软件概述

下载地址:从网上随便找的,本身就是假软件,应该不会再有假的了。

文件:qqqqhckq.apk

大小:580 KB(594,446 字节)

占用空间:584 KB(598,016 字节)

MD5:b1 3c 0c e0 b9 d8 a5 91 f8 79 b4 9a dd 00 20 7a

包名:com.o(这包名我也是醉了)

签名:(谷歌测试签名?)

所有者:EMAILADDRESS=android@android.com, CN=Android, OU=Android, O=Android, L=MountainView, ST=California, C=US

发布者:EMAILADDRESS=android@android.com, CN=Android, OU=Android, O=Android, L=MountainView, ST=California, C=US

序列号:936eacbe07f201df

有效期开始日期: FriFeb 29 09:33:46 CST 2008, 截止日期: Tue Jul 17 09:33:46 CST 2035

证书指纹:

        MD5: E8:9B:15:8E:4B:CF:98:8E:BD:09:EB:83:F5:37:8E:87

        SHA1: 61:ED:37:7E:85:D3:86:A8:DF:EE:6B:86:4B:D8:5B:0B:FA:A5:AF:81

        SHA256:A4:0D:A8:0A:59:D1:70:CA:A9:50:CF:15:C1:8C:45:4D:47:A3:9B:26:98:9D:8B:64:0E:CD:74:5B:A7:1B:F5:DC

         签名算法名称: SHA1withRSA

         版本: 3

 

0x02分析实现

1,解包查看manifest

这是程序的入口,有了入口我们才能一步一步往下分析。

         1.1我们看到一个e4a,猜想可能是一个类似e语言的吧,搜索后发现http://bbs.e4asoft.com/

         1.2启动的StartActivity和mainActivity应该是e4a的,最后启动的是com.o.主窗口

         1.3还有一个服务com.o.后台服务操作


   <application       android:name="com.e4a.runtime.android.E4Aapplication"       android:hardwareAccelerated="true"       android:icon="@drawable/icon"       android:label="QQ悄悄话查看器"       android:persistent="true"       android:theme="@style/ClassicTheme">       <activity           android:name="com.e4a.runtime.android.StartActivity"           android:icon="@drawable/icon"           android:label="QQ悄悄话查看器"           android:theme="@style/StartTheme">           <intent-filter>                <actionandroid:name="android.intent.action.MAIN"/>                 <categoryandroid:name="android.intent.category.DEFAULT"/>                <categoryandroid:name="android.intent.category.LAUNCHER"/>           </intent-filter>       </activity>       <activity           android:name="com.e4a.runtime.android.mainActivity"           android:configChanges="keyboardHidden|orientation"           android:icon="@drawable/icon"           android:label="QQ悄悄话查看器"           android:launchMode="singleTask"           android:screenOrientation="portrait"           android:windowSoftInputMode="adjustPan">           <meta-data               android:name="MainForm"                android:value="com.o.主窗口"/>           <meta-data               android:name="FontSize"               android:value="true"/>            <intent-filter>                <actionandroid:name="android.intent.action.MAIN"/>                <categoryandroid:name="android.intent.category.DEFAULT"/>           </intent-filter>       </activity>        <service android:name="com.o.后台服务操作">            <intent-filterandroid:priority="1000">                <actionandroid:name="com.o.后台服务操作"/>           </intent-filter>       </service></application>

 

2,查看资源文件

网上说会播放声音的,常见的播放声音有2个地方,assets和raw,在assets中找到:


2.1,6M5UBF2J9ZI70.jpg

打开后显示的图,还有作者的QQ

2.2,0.mp3

播放的不可描述的声音。

2.3,0.wma

3,分析源码

这是包中的代码,R文件就不说了。

3.1 初始任务

  这里把4个音量设为100


   /* The audio stream for system sounds */   public static final int STREAM_SYSTEM = 1;   /* The audio stream for the phone ring and message alerts */   public static final int STREAM_RING = 2;   /* The audio stream for music playback */   public static final int STREAM_MUSIC = 3;   /* The audio stream for alarms */   public static final int STREAM_ALARM = 4;  publicvoid 主窗口$创建完毕()  {    音量操作.置音量(4, 100); //设置音量的1234(代码写错这种我就不吐槽了)     音量操作.置音量(4, 100);    音量操作.置音量(2, 100);    音量操作.置音量(3, 100);    媒体操作.播放音乐("0.mp3");//播放音乐,我就想知道0.wma有什么卵用    媒体操作.置循环播放(true);    this.标签1.字体大小(10.0F);    this.标签1.标题("" + 加密操作.RC4解密("4B9D72700A8217D0","0"));//解密后是“免责声明”    this.系统设置1.屏幕锁定();    this.系统设置1.保持屏幕常亮();    this.系统广播1.注册广播("后台服务广播");    this.系统闹钟1.设置闹钟(1, 500L, "闹钟");    this.时钟1.时钟周期(500);  }




3.2 屏蔽按键

 

 

这里屏蔽按键,使按键失效,code对应的音量加、音量减、菜单。

返回键呢?我测试的时候,可以点home键返回桌面,卸载。


    /** Key code constant: Volume Up key.     * Adjusts the speaker volume up. */    public static final int KEYCODE_VOLUME_UP       = 24;    /** Key code constant: Volume Down key.     * Adjusts the speaker volume down. */    public static final int KEYCODE_VOLUME_DOWN     = 25;     /** Key code constant: Menu key. */    public static final int KEYCODE_MENU            = 82;  public void 主窗口$按下某键(int paramInt, BooleanReferenceParameter paramBooleanReferenceParameter)  {    boolean bool = paramBooleanReferenceParameter.get();    if (paramInt == 24)      bool = true;    if (paramInt == 25)      bool = true;    if (paramInt == 82)      bool = true;    paramBooleanReferenceParameter.set(bool);  }



3.3 时钟周期

  publicvoid 时钟2$周期事件()  {    this.时钟1.时钟周期(0);    系统相关类.创建快捷方式2("QQ悄悄话查看器0", 2130837504, "http://");    系统相关类.创建快捷方式2("QQ悄悄话查看器1", 2130837504, "http://");    系统相关类.创建快捷方式2("快手双击工具2", 2130837504, "http://");    系统相关类.创建快捷方式2("快手双击工具3", 2130837504, "http://");    系统相关类.创建快捷方式2("QQ悄悄话查看器4", 2130837504, "http://");  }


3.4标签点击事件

//解密后是“免责声明”//“仅供整蛊娱乐,凡是使用本程序必须承担后果,请勿修改应用程序否则后果自负!”//“我同意”  public void 标签1$被单击()  {    对话框类.信息框("" + 加密操作.RC4解密("4B9D72700A8217D0", "0"), "" + 加密操作.RC4解密("35891F2916806DE1E71622A2DDD1EC7040CC953D96DFBA0145EE0E1F177C902D5CFDD9F787E0B14554D9103F81B7ECDA9E8BE63EA8CFF797820796B2DF4C1BE9856BA4659E76", "0"), "" + 加密操作.RC4解密("46AD6B2C1199", "0"));  }


3.5广播

  publicvoid 系统广播1$收到广播(int paramInt)  {    主窗口.标题(this.系统广播1.取广播内容());    if (主窗口.标题().equals("1"))    {      if (!应用操作.是否在前台())      {        音量操作.置音量(4, 100);        音量操作.置音量(1, 100);        音量操作.置音量(2, 100);        音量操作.置音量(3, 100);        应用操作.返回应用();       this.系统设置1.屏幕解锁();      }    }    else     return;    this.标签1.字体大小(10.0F);  }


0x03 修改测试

为什么不直接测试,而要先分析呢?你以为我傻呀,当然要先研究透才能测试呀。O(∩_∩)O~

      1,修改音乐文件

       1.1我直接替换assets中的0.mp3,重签名安装后,发现音乐不能播放了。

排除签名认证,软件是可以打开的。

排除音乐文件认证,代码总共才那几行。

最后看log,

Token{42656530 ActivityRecord{427b6448com.o/com.e4a.runtime.android.mainActivity}} failed creating starting window                                                           android.view.InflateException:Binary XML file line #34: Error inflating class <unknown>


好像没有跟播放声音有关的呀……

哈哈,我想可能是e4a不能这样改,

于是用ApkIDE编译。

1.2 ApkIDE报了一个

libpng error: Not a PNG fileERROR: Failure processing PNG imageE:\xxunpack\ApkIDE\Work\com.o\res\drawable\icon.png


于是换了一张png的

成功,打开软件终于唱起了葫芦娃,终于不是不可描述啦。

2,去除屏蔽按键

 

.method public 主窗口$按下某键(ILcom/e4a/runtime/parameters/BooleanReferenceParameter;)V   .registers 5    invoke-virtual {p2},Lcom/e4a/runtime/parameters/BooleanReferenceParameter;->get()Z    move-result v0    const/16 v1, 0x18    if-ne p1, v1, :cond_9    const/4 v0, 0x1    :cond_9   const/16 v1, 0x19    if-ne p1, v1, :cond_e    const/4 v0, 0x1    :cond_e   const/16 v1, 0x52    if-ne p1, v1, :cond_13    const/4 v0, 0x1    :cond_13   invoke-virtual {p2, v0}, Lcom/e4a/runtime/parameters/BooleanReferenceParameter;->set(Z)V    return-void.end method

改最后的返回就可以了


   :cond_13    const/4 v0, 0x0    invoke-virtual {p2, v0},Lcom/e4a/runtime/parameters/BooleanReferenceParameter;->set(Z)V return-void

0x04总结

正如前面所说的,并没有分析的价值

1,今早想从群里下载时,也经无法下载了

2,安装时,某流氓也会提示该软件有问题了


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 购机凭证丢了怎么办 滴滴没人接单怎么办 头发干怎么办才好 唯品会东西碎了怎么办 唯品会买东西有质量问题怎么办 来分期不能退货怎么办 商场不肯退衣服怎么办 唯品会衣服坏了怎么办 京东买电视拆机坏的怎么办 余额宝资金冻结怎么办? 余额宝金额冻结怎么办 adidas买了假货怎么办 余额宝冻结金额怎么办 买到不合格地板怎么办 买到翻新地板怎么办 食品里有头发怎么办 家具环保不达标怎么办 买到坏了的食物怎么办 空调检测不合格的怎么办 淘宝卖精仿遇到打假怎么办? 没有收到提货码怎么办 增值税发票超过180天怎么办 花呗借钱还不上怎么办 实体店里没人气怎么办 EMS快件无人签收怎么办 邮政快递丢失了怎么办 快递手机丢了怎么办 拍照签收没收到怎么办 拼多多开店货源怎么办 被购买鉴定投诉怎么办 淘宝上买东西错想用花呗怎么办 淘宝想用花呗买东西差一点怎么办 买了假货怎么办还用吗 免税店买完东西怎么办 淘宝恶意拍单怎么办 二手西服不想要怎么办 苹果8p费电快怎么办 赌博被骗没证据怎么办 异地车子办保险怎么办 淘宝买到旧货怎么办 苹果官网买手机发票怎么办