精华内容
下载资源
问答
  • 通过分析用户的行为,改进APP是非常有意义的。编译APPSEE这个SDK后,大概知道其实现方式。 破解 编译后,在APPSEE中,看到了其继承了 Window.Callback,KeyEvent.Callback,重写了dispatchKeyEve...

    场景

    前一段时间,因为业务需要,看了AppSee这个SDK,通过嵌入APPSEE,可以看到用户在APP期间,点击了哪里,点击频率等和点击的相关信息。通过分析用户的行为,改进APP是非常有意义的。反编译APPSEE这个SDK后,大概知道其实现方式。

    破解

    反编译后,在APPSEE中,看到了其继承了 Window.Callback,KeyEvent.Callback,重写了dispatchKeyEvent,dispatchTouchEvent等方法,猜想实现方式与android中的事件分发有关,来实现事件的拦截,处理,分发。(联想到之前学HTML时候,DIV和BUTTON组件,点击的事件冒泡向上神马的)

    知识介绍

    经过网上查看,android事件分发机制 里讲的很详细。重点是这个图:android事件分发
    如果感觉上面链接里写的有点多,我可以简略的说一下:
    和HTML的事件有点类似,android这里把事件(MotionEvent对象)层层向下传递,如果选择消费掉,则不向下传递。发生的事件会这样流向:
    Activity->ViewGroup->View
    每一步都会其dispatchTouchEvent方法来向其子组件传递这个事件,子组件通过绑定的Listener来处理事件。如果组件的Listener中返回True,则代表消费事件,那么事件就不会再向下一级组件传递,否则处理后继续向下传递。

    所以,思路就比较明显了,通过在最上层的Activity的分发事件的方法处理用户行为信息后,再将事件往下传递即可。这样SDK也不会影响业务的绑定的Listener的函数运行。

    代码实现

    
    import android.app.Activity;
    import android.content.Context;
    import android.view.ActionMode;
    import android.view.KeyEvent;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.MotionEvent;
    import android.view.SearchEvent;
    import android.view.View;
    import android.view.Window;
    import android.view.WindowManager;
    import android.view.accessibility.AccessibilityEvent;
    import android.widget.Toast;
    
    import androidx.annotation.NonNull;
    import androidx.annotation.Nullable;
    
    //实现Window.Callback中的事件分发方法,并与业务的Context绑定
    public class Callbacks implements Window.Callback,KeyEvent.Callback{
    
        public Activity context;
        public Window w;
    
        public Callbacks(Context c) {
            this.context = (Activity)c;
            w = context.getWindow();
            w.setCallback(this);
        }
    
        @Override
        public boolean dispatchKeyEvent(KeyEvent event) {
            return false;
        }
    
        @Override
        public boolean dispatchKeyShortcutEvent(KeyEvent event) {
            return false;
        }
    
        @Override
        public boolean dispatchTouchEvent(MotionEvent event) {
    
    		//这里对用户的行为信息进行处理,保存为日志/发向服务端等
            Toast.makeText(context, "1111111111", Toast.LENGTH_SHORT).show();
            if (w.superDispatchTouchEvent(event)) {
                return true;
            }
            return false;
        }
    
        @Override
        public boolean dispatchTrackballEvent(MotionEvent event) {
            return false;
        }
    
        @Override
        public boolean dispatchGenericMotionEvent(MotionEvent event) {
            return false;
        }
    
        @Override
        public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event) {
            return false;
        }
    
        @Override
        public View onCreatePanelView(int featureId) {
            return null;
        }
    
        @Override
        public boolean onCreatePanelMenu(int featureId, @NonNull Menu menu) {
            return false;
        }
    
        @Override
        public boolean onPreparePanel(int featureId, @Nullable View view, @NonNull Menu menu) {
            return false;
        }
    
        @Override
        public boolean onMenuOpened(int featureId, @NonNull Menu menu) {
            return false;
        }
    
        @Override
        public boolean onMenuItemSelected(int featureId, @NonNull MenuItem item) {
            return false;
        }
    
        @Override
        public void onWindowAttributesChanged(WindowManager.LayoutParams attrs) {
    
        }
    
        @Override
        public void onContentChanged() {
    
        }
    
        @Override
        public void onWindowFocusChanged(boolean hasFocus) {
    
        }
    
        @Override
        public void onAttachedToWindow() {
    
        }
    
        @Override
        public void onDetachedFromWindow() {
    
        }
    
        @Override
        public void onPanelClosed(int featureId, @NonNull Menu menu) {
    
        }
    
        @Override
        public boolean onSearchRequested() {
            return false;
        }
    
        @Override
        public boolean onSearchRequested(SearchEvent searchEvent) {
            return false;
        }
    
        @Override
        public ActionMode onWindowStartingActionMode(ActionMode.Callback callback) {
            return null;
        }
    
        @Override
        public ActionMode onWindowStartingActionMode(ActionMode.Callback callback, int type) {
            return null;
        }
    
        @Override
        public void onActionModeStarted(ActionMode mode) {
    
        }
    
        @Override
        public void onActionModeFinished(ActionMode mode) {
    
        }
    
        @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
            return false;
        }
    
        @Override
        public boolean onKeyLongPress(int keyCode, KeyEvent event) {
            return false;
        }
    
        @Override
        public boolean onKeyUp(int keyCode, KeyEvent event) {
            return false;
        }
    
        @Override
        public boolean onKeyMultiple(int keyCode, int count, KeyEvent event) {
            return false;
        }
    }
    
    
    展开全文
  • 本软件让手机麦克风持续保持静音,使录音机程序无法录到声音,达到本机窃听的目的。第二种可能性, 当手机监听到用户从浅睡进入深睡状态时,立即播放短促躁音,使退回浅睡,达到睡眠破坏的目的; 对于这种木马...
  • 但另一方面,NOMAD也饱受诟病,尤其是不少从SD家6系转来的用户,觉得菜单极其人类。比如说,前阵有很多人在问如何将ZAXCOM返回出厂设置?位置:MENU-MEMORY-RECALL FACTORY DEFAULTS本人其实深有同感,毕竟天下...

    85b5f7e02e203db0e184876f2de3e40e.png

    NOMAD因其较高的性价比在国内市场占有率颇高,尤其是NOVA的推出,估计日后会有大量二手NOMAD进入大家的视线。但另一方面,NOMAD也饱受诟病,尤其是不少从SD家6系转来的用户,觉得菜单极其反人类。

    比如说,前阵有很多人在问如何将ZAXCOM返回出厂设置?

    位置:MENU-MEMORY-RECALL FACTORY DEFAULTS

    本人其实深有同感,毕竟天下没有完美的录音机。对于用户来说,如何平衡付出(购买产品,学习成本,搭建系统以及日后维护的时间成本)与所得(音质,功能,效率)是永恒的话题。

    由于NOMAD,MAXX,NOVA的操作系统内核较为接近,我将以下面所述普通拍摄日的基本操作为例,简单快速的讲一下本系统的常用功能和内部逻辑。

    • 在录音组到达现场后,通常需要进行如新建文件夹,设置时码等准备工作。
    • 随后根据拍摄计划,设置必要的元数据信息,如场镜号。
    • 通过阅读剧本和走戏彩排后,可以确定话筒和轨道的分配,这时可以设置好轨道名称,并根据实际拍摄的情况,输入必要的标注。
    • 拍摄过程中,根据需要切换监听模式,控制口子和推子将声音记录
    • 在一个镜头或一场戏完成后,对场镜号以及轨道作必要的调整。
    • 当天拍摄完毕后,将文件备份,转交相关部门,整理场记单。

    菜单概述:

    对于NOMAD,MAXX,NOVA的系统平台(下文简称N平台)来说有三个主要菜单:

    1. 系统菜单:在主页按下MENU按钮进入

    d3aeb759f605581485cad3c4a0715686.png

    可以看到,常用的ENG SETUP被设置在菜单最后,而且需要翻页才能看到。

    2. IO菜单:连按两次BUS按钮,或是在系统菜单中按一次BUS按钮

    284bec1862fa4d8592e695bf488edb15.png

    由于不像Deva带有触摸屏,尽管IO矩阵界面和前者相似,但操作的便捷程度就大打折扣了。

    e74316eac1c9edb5d80ca1d5c36050b6.png

    3. 耳机监听菜单:同时按下MENU和HP按钮

    28cbd4da8cf62b0a64181d9f3a29b68c.png

    耳机的监听矩阵还是很直观的,但耳机预设的名称需要在另一个菜单中才能更改,也是颇为麻烦

    下面根据前文所述,逐个介绍常用功能

    1. 拍摄前

    • 准备工作
    MENU-MY NOMAD-PRIMARY CARD-FORMAT-PRIMARY CARD-CHOOSE PRIMARY FOLDER-edit current folder name

    将主卡格式化为MARF格式,选择一个文件夹并以特定方式命名,如当前日期或拍摄日。

    按两下TC按钮,进入时码设置,根据实际需求设置参数即可。

    • 场镜号

    MAIN MENU-META DATA设置scene/take。和我们传统的场镜条体系不一样,美式只有场号和条数,我们可以在场号中以划线来分开场镜号,或是以ABC顺序记录场镜号。

    • 轨道分配

    按两下BUS按钮进入BUS ROUNTING菜单

    CARD MIX1-4/5-8 进入轨道分配界面,首页是模拟输入,可以通过BUS按钮在辅助输入以及数字输入间循环切换

    210fe8bfdfad8f6bd66ab9ec5e2a40cc.png

    记录推前或是推后分别P和X

    • 轨道名称
      轨道名称的菜单并没有设计在BUS ROUTING菜单中,虽然逻辑上也没问题,但实在藏的太深了。
      位置:ENG Setup-TRACK NAMES。
      为了便于操作,N平台对轨道名和标注作了预置,用户可以在预置菜单中预先编辑好常用的轨道名和标注,在需要输入的时候按下PFL即可进入预置栏选择,这还是很方便的。

    2. 拍摄中

    • 拍摄时常会需要切换监听,NOMAD提供两种方式:
    1. 按下PFL后选择1-6号按钮,可以监听推前信号
    2. 按下HP旋钮,在预置的多种耳机监听模式间切换

    前文已经说过耳机监听菜单的进入方式。需要特别注意一下右下角的E,表示是否需要启用当前的监听矩阵。
    悲惨的事情又再次发生,当用户看到监听预设里HP1,HP2之类的抽象数字想改名时,又找不到菜单了。
    位置:ENG Setup-HP MONITOR NAMES。总结一下这个ENG Setup,其中包含了多个和命名相关的菜单,如轨道名,标注,耳机监听预设名。

    ce5c758316dcda3c560828973d7f99be.png
    • 如果需要对一条声音做标注,也可以预先存储一些标注后,再通过PFL按钮来调用。

    3. 拍摄结束

    • ZAXCOM和其它品牌录音机最大的区别就是其独有的MARF文件系统,详见MARF 今年20岁了,由于文件系统本身的安全系数极高,所以可以在每天拍摄结束再进行备份操作。但如果录音素材量较大,也可以选择在拍摄的同时就进行备份。
      MARF格式的备份被称作镜像(Mirror),由于MARF文件本身无法直接通过电脑读取,所以必须要通过镜像来将声音文件备份,用于数据传递。

    915a74e1b262986a59cfdcb5f17c3e33.png


    Mirror共有三个状态:OFF,ON,CONTINUOUS
    -OFF:不做镜像
    -ON:在不录音的时候镜像
    -CONTINUOUS:录音同时进行镜像

    • 场记单同样位于MY NOMAD菜单,但需要镜像停止状态时才能写入。
    • 场记单是 .CSV格式,可以导入到电子表格中再做进一步调整处理。详见 如何制作一份电子场记单之WaveAgent

    ONE MORE THING

    shifted/unshifted mode

    位置:MENU-MODE-TRANSPORT MODE

    84c1cd5d8cc898db35188775f54fa71b.png

    可以看到图中三个按钮都有两个功能,而MENU按钮就起到了类似shift键的功能。shifted/unshifted模式则是设置每个按钮可以直接调用哪个功能,而需要配合MENU键实现另一个功能。

    另外在shifted模式下,尽管不能直接短按开机录音、停止和回放,但可以长按1.5秒实现上述功能。不过说实话,薄膜印刷按键要长按1.5秒真的很蛋疼,新的NOVA终于彻底革了它们的命,大快人心。

    64a0aaf581a244c8d2156ed046940d5a.png
    采用橡胶颗粒按键的NOVA

    总结:

    NOMAD上手相对较难,主要原因包括:

    1. 菜单排列和分类的逻辑比较另类,有些常用功能的调用较为麻烦。
    2. 按键触感比较特殊,需要些时间习惯。
    3. MARF格式虽然很强大,但内在逻辑也和我们常用的录音机不同。
    4. 由于没有触摸屏,数据输入和IO设置的操作略繁琐。

    但是NOMAD的话放和AD品质,内置ZaxNet功能,以及很多独特强大的操作功能,又使其在同价位录音机中有鹤立鸡群的感觉。

    最后,祝愿大家能够尽早适应N平台,享受超高性价比录音机带来的快感。


    声理未声:一个严肃讨论同期录音的公众号

    ID:SOUNTITAION

    展开全文
  • 但是过来不行 应该是我所写的APP的蓝牙 AcceptThread线程出了问题 但是最近看了很多博客 基本就是按照这个方法来写的 不知道是哪里的问题 下面贴出代码 和日志 ``` package ...
  • xposed监听支付宝账单

    万次阅读 热门讨论 2018-12-31 05:16:38
    直接hook app_pross 尤其是VirtualXposed的出现 更是降低了xposed的入门条件,提高效率,专注目标,节约生命。 手握大神们创造的神器,总想干点不可描述的事情。 思来想去,最终把手伸向了支付鸨。 实现的功能是 ...

    前段时间发现了xposed 感觉这技术很方便 省去了反编译,重打包的繁琐操作。

    直接hook app_pross

    尤其是VirtualXposed的出现 更是降低了xposed的入门条件,提高效率,专注目标,节约生命。

    手握大神们创造的神器,总想干点不可描述的事情。

    思来想去,最终把手伸向了支付鸨。 实现的功能是 监听支付宝新订单

    使用的工具:jadx(反编译工具)  VirtualXposed 支付宝

    OrderBack完成的主要功能是监听支付宝支付成功的订单 并上传至事先准备好的服务器上 所有核心功能放在hook层处理 app层只负责展示类的任务

    hook层通过IPC跨进程更新日志到app上

    hook层通过network模块上传数据至服务器

    hook层通过database模块保存数据至本地数据库

    app层监听IPC展示日志

    app层通过database查询历史订单

    common是公用的一些工具 包含日志打印 动态权限管理等

    最初的安装包大小为867k优化后至157k

    157.7kb的安装包 完成了不可描述的事情,xposed值得你的付出。

    第一次写blog,也不知道讲些什么。

    后期会整理一下思路再来优化文章。

    对 反编译 项目优化 xposed感兴趣的朋友 可以给我留言 一起交流

    后期会把项目里面的一些重要知识点 整理一下 讲给大家

    展开全文
  • @一:爬取主要流程简述1.APP的爬取比Web爬取更加容易,爬虫没有那么强,且大部分数据是以JSON形式传输的,解析简单。2.在APP中想要查看请求与响应(类似浏览器的开发者工具监听到的各个网络请求和响应),就需要借助...

    今天向大家介绍app爬取。

    @

    一:爬取主要流程简述

    1.APP的爬取比Web爬取更加容易,反爬虫没有那么强,且大部分数据是以JSON形式传输的,解析简单。

    2.在APP中想要查看请求与响应(类似浏览器的开发者工具监听到的各个网络请求和响应),就需要借助抓包软件。

    3.在抓取之前,需要设置代理将手机处于抓包软件的监听下,就可以用同一网络进行监听,获得所有的网络和请求。

    4.如果是有规则的,就只需要分析即可;如果没有规律,就可以用另一个工具mitmdump对接Python脚本直接处理Response。

    5.抓取肯定不能由人手动完成,还需要做到自动化,还要对App进行自动化控制,可以用库Appium。

    二:抓包工具Charles

    1.Charles的使用

    Charles是一个网络抓包工具,比Fiddler功能更强大,可以进行分析移动App的数据包,获取所有的网络请求和网络内容

    2.安装

    (1)安装链接

    (2)须知

    charles是收费软件,但可以免费试用30天。试用期过了,还可以试用,不过每次试用不能超过30分钟,启动有10秒的延迟,但大部分还可以使用。

    (3)安装后

    3.证书配置

    (1)证书配置说明

    现在很多网页都在向HTTPS(超文本传输协议的加密版,即HTTP加入SSL层),经过SSL加密更加安全,真实,大部分都由CA机构颁发安全签章(12306不是CA机构颁发,但不被信任)。现在应用HTTPS协议的App通信数据都会是加密的,常规的截包方法是无法识别请求内部的数据的。

    要抓取APP端的数据,要在PC和手机端都安装证书。

    (2)windows系统安装证书配置

    打开Charles,点击Help->SSL Proxying->Install Charles Root Certificate,进入证书的安装页面:

    点击安装证书,就会打开证书安装向导,然后点击下一步,此时需要选择证书的存储区域,选择第二个选项”将所有证书放入下列存储”:

    然后点击浏览,选择证书存储位置为”受信任的根证书颁发机构”,点击确认并进入下一步:

    (3)Android手机安装证书配置

    手机与电脑连接同一个WiFi。

    设置如下:

    可以用操作系统命令ipconfig查看PC端ip:

    为10.61.131.172,默认代理端口号为8888。之后代理服务器为电脑的IP地址。端口为8888。设置如下:

    会发现360手机的标志

    接下来对手机下载证书:

    访问手机访问 chls.pro/ssl ,下载证书:

    此时下载的是个.pem 格式的。需要手动更改为.crt 格式,最后随便放进某个文件夹即可:

    用手机(我用的360手机)设置里的安全,找到从存储设备安装找到该crt文件进行配置:

    此时需要设置锁屏:

    就可以完成证书的安装。

    4.开启SSL监听

    点击Proxy->SSLProxying Settings,在弹出的窗口中点击Add按钮,添加需要监听的地址和端口号。需要监听所有的HTTPS请求,可以直接将地址和端口设置为,即添加:*设置,就可以抓取所有的HTTPS请求包;如果不配置,抓取的HTTPS请求包状态可能是unknown。

    这样就指定只监听我们需要的ip和端口的请求和响应。

    5.原理

    Charles运行时会在PC端的8888开启一个代理服务,实际上是一个HTTP/HTTPS的代理。

    可以是用手机通过相同的无线网络连接(这里用的是校园网),设置手机代理为Charles的代理地址,这样手机访问互联网的数据就会经过Charles抓包工具,Charles转发这些数据到真实的服务器,再转发到手机中。这样抓包工具(Charles)就起到了中间人的作用,还有权对请求和响应进行修改。

    6.抓包

    我们可以看到我们已经请求了很多数据了,点击左上角的扫帚按钮即可清空捕获到的所有请求,然后点击第二个监听按钮,表明Charles正在监听App的网络数据流。如下:

    抓包后可以看到音乐:

    可以通过分析不同的URL请求,获得数据,也可以通过修改数据,得到那些参数是需要的。

    这是有规则的,无规则的如果没有规律的url,就可以用另一个工具mitmdump对接Python脚本直接处理Response。

    三:抓包工具mitmproxy(免费的)

    1.简介

    mitmproxy是一个支持HTTP和HTTPS的抓包程序,有类似Fiddler和Charles的功能,但它是一个控制台的形式操作。

    2.关联组件

    mirmproxy还有两个关联组件。一个是mitmdump,是命令行接口,可以对接Python脚本,用Python处理数据;另一个是mitmweb,是一个web程序,可以清楚地查看mitmproxy捕获的请求。

    3.安装和证书配置

    (1)用pip安装

    这个是安装python后就有的安装方法,也是最简单的安装方法,在控制台输入

    Pip install mitmproxy即可,会自动安装mitmdump和mitmweb组件:

    但是到最后安装会失败:

    是因为安装这个包的 window 系统需要首先安装 Microsoft Visual C++ V14.0以上 才行。

    可以在https://visualstudio.microsoft.com/downloads/

    直接下载即可,安装之后需要c++的库之类的东西都安装了,然后再在命令行进行安装 mitmproxy即可:

    然后进入安装目录,我们选择第三个:

    在“安装 Visual Studio”屏幕中找到所需的工作负载,选择"使用的桌面开发C++"工作负荷:

    注:这里的文件太大,我直接安装到E盘。

    之后再安装就可以安装成功了:

    (2)在GitHub或官网上安装

    3.证书配置

    (1) 产生CA证书

    对于mitmproxy来说,如果想要截获HTTPS请求,也需要设置证书。它在安装后会提供一套CA证书,只要客户端信任了mitmproxy的证书,就可以通过mitmproxy获取HTTPS请求的具体内容,否则无法解析HTTPS请求。

    在cmd中输入命令行接口命令mitmdump,产生CA证书,在用户目录找到CA证书:

    这里的目录可以自行指定,但必须是在第一次运行mimdump时。

    (2)PC端安装

    电脑是Window系统,因此用mitmproxy-ca.p12,双击后出现导入证书的引导页:

    点击下一步,不需要设置密码:

    接下来点击下一步,需要选择证书的存储区域,和配置Charles一样:

    最后会有警告,选择是即可,证书就安装到我们的电脑上了:

    (3)手机端安装

    我的手机是Android系统,直接把mitmproxy-ca.pem文件发送到手机上即可。

    配置方法和Charles类似。HTTPS请求。

    手动更改为.crt 格式,最后随便放进某个文件夹即可,用手机(我用的360手机)设置里的安全,找到从存储设备安装找到该crt文件进行配置:

    4.抓包原理

    在mitmproxy中,会在PC端的8080端口运行,然后开启一个代理服务,就是一个HTTP/HTTPS代理,类似ip代理。

    手机和PC在同一局域网内,设置代理为mitmproxy的代理地址,抓包工具mitmproxy就相当于中间人的作用,数据就会流经抓包工具。这个过程还可以对接mitmdump,抓取到的请求和响应都可以直接用Python来处理,然后分析,存到本地,或存到数据库。

    5.设置代理

    在抓包前需要先设手机局域网置代理为抓包工具mitmproxy代理。

    (1)启动代理服务

    在cmd中输入mitmproxy,会在8080端口运行一个代理服务,由于该命令不支持Windows系统,因此在Windows系统中用mitmdump命令:

    用mitmdump启动代理服务,监听8080端口:

    (2)设置当前代理

    将手机和电脑连到同一局域网下,先用操作系统命令ipconfig查看PC端当前局域网的ip:

    为10.61.131.172,在手机端设置代理如下:

    这样就配置好了mitmproxy的代理。

    6.抓包

    运行mitmweb(由于mitmproxy不能用),就可以看到手机上的所有请求:

    网页呈现如下:

    随便打开一条网络请求,发现和在网页的开发者工具下,监听到的一样:

    7.mitmproxy的高级功能mitmdump

    上面的功能与方法在Fiddler和Charles中也有,那么mitmproxy的优势何在?

    在mitmproxy中它的强大体现到mitmdump工具,可以对接Python对数据请求进行处理。

    它是mitmproxy的命令行接口,可以对接python程序对请求进行处理,不需要手动截取和分析HTTP请求和响应,进行数据存储和解析都可以通过Python来完成。

    (1)简单获取数据(随便一个app)

    我们先创建一个文件夹:

    然后打开转到该文件夹下:

    输入mitmdump -w outfile(outfile名称和扩展名可以自定义,文件放到当前cmd打开目录下,也可以用绝对相对路径,但比较麻烦):

    截取广播页面:

    之后把截获的数据保存到文件夹下:

    打开文件,发现好多乱码:

    下面会对其进行处理。

    (2)可以指定一个脚本来处理截获的数据:

    Mitmdump -s script.py(脚本名字可以自定义),需要放在cmd当前目录下,也可以用绝对相对路径,但比较麻烦。

    写入如下代码:

    就是定义了一个request()方法,参数为url,其实是一个HTTPFlow对象,通过request属性即可获取到当前请求对象。然后打印出请求头,将User-Agent(用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言浏览器插件等)修改为MitmProxy。

    运行之后手机端访问http://httpbin.org/get,可以看到请求头:

    PC端如下:

    手机端请求的Headers实际上就是请求的Headers,User-Agent被修改成了mitmproxy(防反爬),PC端显示修改后的Headers内容,其User-Agent正是MitProxy。

    这样就可以让服务器识别不出我们的是爬虫程序了。

    (3)日志输出

    mitmdump提供了专门的日志输出功能,就是设定输出到控制台的颜色,可以分别为不同级别配置不同的颜色,更加直观:

    效果如下:

    (4)输出请求数据

    可以输出一些请求信息,比如请求连接(url),请求头(headers),请求Cookies(cookies),请求Host(host),请求方法(method),请求端口(port),请求协议(scheme)等。

    还可以把这些请求的信息进行修改后,再发送到服务器中,这样,服务器返回的可能不是app想请求的网页,这就是为什么一些app打开后却访问到了其他网址的原因。

    也可以通过该用法,通过修改Cookies,添加代理等方式来尽可能避免反爬。

    这里就先进行略过。

    (5)获得响应

    响应就是请求后服务器返回的信息,也就是我们需要的,大部分是json格式文件。

    对于json格式文件,mitmdump也提供了对应的处理接口,就是response()方法。

    我们可以打印各个http/https请求的响应内容,不过text才是我们想要的json格式文件,也可以用content,不过返回的是二进制文件。

    代码如下:

    我们先试一下:

    内容有些乱,接下来我们就进行分析得到我们需要的数据。

    四:利用mitmproxy进行app数据获取

    1.获取请求url

    2.接口url文件

    把接口保存到txt文件中:

    发现只有很长的接口才返回json文件。因此下面就需要对这些接口进行筛选。

    3.爬取json

    代码在pa_qu_json.py文件中,需要先创建一个json爬取数据文件夹,爬取后的结果如下:

    接下来用Python处理即可,这里只是简单爬取。在实际应用中,不是人工的,是用代码自动化进行分析各个请求和响应进行爬取。这里有个跨平台的移动端自动化测试工具,可以很方便地进行自动化爬取,在下一个爬虫博客中会详细讲到,希望大家把宝贵意见提出来一起学习进步。

    展开全文
  • 前言: APNs 协议在近两年的 WWDC 上改过两次, 15 年 12 月 17 日更是推出了革命性的新特性。但在国内传播的博客、面试题里关于 APNs 的答案全都是旧的、错的。 导航: 对 APNs 的吐槽 APNs新闻一栏新旧 ...对App
  • APP数据的爬取

    2019-04-09 22:22:00
    App 的爬取相比 Web 端爬取更加容易,爬虫能力没有那么强,而且数据大多是以 JSON形式传 输的,解析更加简单。在 Web 端,我们可以通过浏览器的开发者工具监听到各个网络请求和响应过程, 在 App 端如果想要查看...
  • 一、app爬取 前面都是介绍爬取Web网页的内容,随着移动互联网的发展,越来越多的企业并没有提供...在Web端 我们可以通过浏览器开发者工具 监听到各个网络请求和响应过程 在App端 查看内容就需要抓包软件例如 Wire...
  • 客户端不用修改,修改服务端。 1.使用 RemoteCallbackList 代替 CopyOnWriteArrayList ; 2.修改注册、注册方法; ...import android.app.Service; import android.content.Intent; import and
  • 上周项目的极光推送出问题了,主要是两个问题,第一个为App接收到推送下来的通知后点击状态栏的通知不能跳转。第二个问题为H5页面不能监听到推送下了的通知内容。下面我将分别记录这两个问题的方法。 问题解决 上面...
  • APP工程文件和生成的APP都有的,自己编译就好 先上传源码到服务器 可以直接拿去运营的 上传好了就解压到根目录 //数据库引擎 define(‘DB_ENGINE’,‘MyISAM’); //数据库方式 define(‘DB_HOOK’,‘mysqli’); /
  • Android 仿抖音APP下拉刷新功能,首先分析这个效果的实现思路,大致如下:  1、上拉时页面有翻页效果,可以用scrollview的pagingEnabled来实现,也就是说列表页不管你用tableview还是collectionview,只要每个cell...
  • 百学须先立志—学前须知:我们经常在各大主流APP上要求被写上地址,如百度外卖、爱鲜蜂收货地址等等;其中他们大多数是可以让我们在地图上移动选址。就如下面这段GIF演示的一样: 尽信书,不如无书—能学到什么? 1...
  • 百学须先立志—学前须知:我们经常在各大主流APP上要求被写上地址,如百度外卖、爱鲜蜂收...1、地图状态MapStatus类及监听setOnMapStatusChangeListener2、定位LocationClient类3、地理编码GeoCoder类阅读详情:h...
  • Oracle 远程访问配置 服务端配置 ...以下配置文件中的localhost改为ip地址,否则,远程不能访问. ...# listener.ora Network Configuration File: C:\app\Administrator\product\11.2.0\dbhome...
  • Android安全策略

    2015-12-03 08:52:32
    1.开发一款app,保证app安全很重要,别人可以通过编译查看你的代码获得与服务器的交互的接口,攻击服务器,监听数据报文;
  • EventBus简化了各组件间的...广播机制采用的观察者模式,即只要app注册了对广播的监听,广播发出的时候,就可以监听到。动态注册的广播必须动态取消。同样的,eventBus也需要注册和注册。 EventBus是按事件event...
  • EventBus简化了各组件间的...广播机制采用的观察者模式,即只要app注册了对广播的监听,广播发出的时候,就可以监听到。动态注册的广播必须动态取消。同样的,eventBus也需要注册和注册。 EventBus是按事件event...
  • NJCTF (easycrack)

    2019-05-27 21:04:00
    安装app查看。一个输入框,输入随便输入显示Try again. 放入JEB编译。 关于输入框监听是第一次见,具体可以看看这个博客https://www.jianshu.com/p/f976c677189a 函数的作用是,如果字符串s变动,将会执行...
  • 这个问题找了蛮久了,今天意外得到解决,从百度上查到的大多都是监听返回按钮点击两次返回后直接退出APP。我这里需要的却是回上个页面。 正文正文 //-------------监听返回让他点击两次才能返回--------------- ...
  • android优化

    2015-07-09 20:47:21
    前言由于所有的android App都运行在Dalvik虚拟机上,而虚拟机只为每个应用程序分配16M或者24M的运行内存。所以我们所写的App需要对内存的分配...例如:监听手机来信、开机动态广播。 1.3、资源对象没关闭造。例如:Fil
  • 关于2020年平台架构待优化事项总结

    千次阅读 2020-01-10 14:26:12
    1、安全、逆向工程:明文字符串加密、防止动态库注入、防止App被二次签名、增加编译破解难度、现有二次打包方案优化。 2、UI线程卡顿监控工具的实现:基于Runloop和UI线程的FPS做到实时监控线程卡顿,并将当前...
  • 一、背景介绍在电商产品中(可以打开你的淘宝、天猫、京东App),通过对商品的曝光进行数据埋点,就能推出用户的行为和交互习惯,从而优化推荐和搜索算法以及交互,最终的目的当然是为了增加用户购买力。...
  • 测试

    2015-10-13 11:27:58
    百学须先立志—学前须知:我们经常在各大主流APP上要求被写上地址,如百度外卖、爱鲜蜂收货地址等等;其中他们大多数是可以让我们在地图上移动选址。就如下面这段GIF演示的一样: 尽信书,不如无书—能学到什么?1、...
  • 物联网渗透基础思路基础概述技术需求渗透测试二进制逆向分析硬件拆焊工具介绍汇编流量分析固件提取分析漏洞挖掘分析评估挖掘点常见漏洞风险点基于Web安全逻辑漏洞基于固件二进制后门漏洞云端交互基于通信\私有协议...
  • |--app信息menifest获取(如版本号) |--AsyncQueryHandler之异步查询Cursor处理 |--AutoCompleteTextView自动提示的用法 |--BitMap、Drawable、inputStream及byte[] 互转 |--ContentProvider内容提供者定义 |--...

空空如也

空空如也

1 2 3
收藏数 52
精华内容 20
关键字:

反监听app