[ステップ](Steps)モディファイヤ

11028 ワード

[歩数](Steps)モディファイヤの概要
  • 1.微信
  • 微信計ステップ修正コード機能分析:
  • 2.QQ
  • 3.アリペイ
  • 注意
  • 1.微信
    微信のステップデータは/data/data/comに保存する.tencent.mm/MicroMsg/stepcounter.cfgと/data/data/com.tencent.mm/MicroMsg/MM_stepcounter.cfg.この2つのファイルはJavaシーケンス化データファイルで、ObjectInputStreamとObjectOutputStreamを使用して読み書きします.
    stepcounter.cfgのデータはSensorEventListenerが存在するcomである.tencent.mm:exdeviceプロセスが書き込みました.フォーマットは以下の通りです.
    {209=47669212487765,201=11,202=150160320,203=45,204=1501640915492}
    キー値201が対応する現在の今日歩数キー値202が対応する今日開始時刻(timestamp/10000)キー値203がstep counter sensorである歩数キー値204が対応する前回保存時刻キー値209がstep counter sensorであるタイムスタンプstepcounterである.cfgのデータはcom.tencent.mmプロセスは今日のステップ数を読み出してアップロードし、アップロード結果をMM_に書き込むstepcounter.cfg.MM_stepcounter.cfgファイルのフォーマットは以下の通りです.
    {1=1501588258133, 2={"stepCounterRateUs":600000,"stepCounterSaveInterval":60000,"stepCounterSaveStep":50,"stepCounterMaxStep5m":1500,"deviceStepSwitch":1,"extStepApiSwitch":0,"stepExtConfig":{"version":1,"interval":7200},"stepCountUploadConfig":{"backgroundTimeInterval":60,"backgroundStepCountInterval":500}}, 3=1501640939165, 4=25}
    

    次のようになります.
    キー値1が何に対応するのか、キー値2が対応しているのは配置キー値3が対応しているのは、最後のアップロード時間キー値4が対応しているのは、最後のアップロードステップ数が微信運動を変更するステップ数が簡単で、stepcounterを変更するだけである.cfgファイルの現在の今日のステップ数、すなわち201に対応する値でよい.
    微信計ステップ修正コード機能分析:
    1.それぞれのfragmentから:mFragments.add(WechatFragment.newInstance()); mFragments.add(QQFragment.newInstance()); mFragments.add(AlipayFragment.newInstance());
    2.機能はStep Dataのstore関数で実現
        writeResult = write(context);
    

    3.このStep Dataインタフェースを継承してwriteメソッドを書き換える実装
        @Override
        protected int write(Context context) {
            FileOutputStream fos;
            ObjectOutputStream oos;
    
            if (mStepCounterMap == null) {
                return FAIL;
            }
            try {
                killWechatProcess(context);
                fos = new FileOutputStream(STEP_COUNTER_CFG);// "/data/data/com.tencent.mm/MicroMsg/stepcounter.cfg";
                oos = new ObjectOutputStream(fos);
                mStepCounterMap.put(CURRENT_TODAY_STEP, getStep());
                oos.writeObject(mStepCounterMap);
                oos.close();
                fos.close();
                return SUCCESS;
            } catch (Exception e) {
                return FAIL;
            }
        }
    

    2.QQ
    QQのステップデータは/data/data/comに保存する.tencent.mobileqq/files/step.info.このファイルは1つの暗号化ファイルで、使う暗号化アルゴリズムはテンセントがよく使うTEA暗号化アルゴリズムで、ネット上ですでに多くの人がアルゴリズムコードを提供して、私も別の文章の中で分析を提供します.復号化に用いる鍵は4 eY#X@~g.+U)2%$
    データの復号化後、フォーマットは次のとおりです.
    {"1504800000000_offset":0,"1504800000000_init":426,"1504800000000_total":2109,"isStepCounterEnable":true,"last_report_time":1504856818805,"1504886400000_init":2109}
    

    次のようになります.
    接頭辞15048000000000今日開始タイムスタンプ接頭辞1504886400000明日開始タイムスタンプキー値last_report_timeは最後のアップロードタイムキー値に対応する_Initは今日からstep counter sensorのステップキー値です.totalは現在のstep counter sensorのステップ数このファイルはSensorEventListenerが存在するcomである.tencent.Mobileqq:MSFプロセス書き込み、com.tencent.Mobileqqプロセスは読み取り、アップロードし、アップロード結果をstepに書きます.info.現在の今日のステップstep=total - _init + _offsetなので変更_offsetで今日のステップ数を変更できます.
    3.アリペイ
    アリペイはSharedPreferencesを使用してステップデータファイルを保存します.それぞれNewPedoMeterとNewPedometerです.private. NewPedoMeter_privateは主にSensorEventLitstenerがいるcom.eg.android.AlipayGphone:extプロセスに書き込まれたデータは次のとおりです.
    
    
        [{"biz":"alipay","steps":4248,"time":1504162956624}]
        
        {"biz":"alipay","steps":4248,"time":1504162956624}
    
    

    キー値stepRecordキー値は記録配列に対応しており、各記録のstepsは保存されているstep counter sensorのステップ数、timeはこの記録を書き込む時間であり、これらの記録から一定時間のステップ数を算出し、前回アップロードしたステップ数を加えることで現在のステップ数を算出するNewPedoMeterデータは以下の通りである.
    
    <map>
        <boolean name="startup" value="true" />
        <string name="baseStep">{"steps":1135,"time":1504162956624}string>
        <boolean name="checkuser" value="true" />
        <string name="userId">2088802851669638string>
        <string name="last_stepinfo_today">{"biz":"alipay","steps":1133,"time":1504162998266}string>
    map>
    

    キー値baseStepは、現在の今日のステップ数NewPedoMeterは、現在の今日のステップ数の計算に関係なくcomを保存する.eg.android.AlipayGphoneプロセスがデータをアップロードした結果.現在の今日のステップ数を計算すると、アリペイはサーバーに前回アップロードしたステップ数とアップロード時間を要求し、前回アップロードしたステップ数を計算し、前回アップロードしたステップ数を加えると現在のステップ数になります.現在の今日のステップ数を変更するには、NewPedoMeterのstepRecordのレコードを変更するだけでよい.最も簡単な方法は、stepRecordの最後のレコードのみを保持し、step counter sensorの現在のステップ数に応じて最後のレコードのsteps値を小さくすることである.
    に注意
    ファイルを変更するときは、キャッシュの問題に注意してください.そうしないと、変更は無効です.
    QQ方案>支付宝方案>微信方案を見ることができます