逆转Snapchat - 隐藏代码

admin 2019-8-16 173

我认为适用于Android的Snapchat应用程序会很酷。虽然我最初更感兴趣的是逆转应用程序并制作脚本来自动化Snapchat,但事实证明有人已经完成了它:https:  //github.com/dstelljes/php-sn

该死的!

然而,这个过程并不完全是浪费,因为我偶然发现了一些非常奇怪的事情......

注意:要获得此源代码,您需要获取Snapchat APK。然后使用  dex2jar创建.jar文件,现在您可以使用  Java Decompiler  查看源代码(使用Java)。这是可能的,因为Java编译成字节码中间语言)而不是机器码

如果您在“ui”包下检查:

你会注意到这个:

Selection_023

这是我发现的奇怪代码:

package com.snapchat.android.ui;

import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Build.VERSION;
import android.preference.PreferenceManager;
import android.view.MotionEvent;
import com.WazaBe.HoloEverywhere.widget.Toast;
import com.snapchat.android.util.ApiHelper;

public class PressureCooker
{
  private static final float MAX_OUTPUT = 40.0F;
  private static final float MIN_OUTPUT;
  private Context mContext;
  private CropProcessor mPressureProcessor;
  private LowpassProcessor mSizeProcessor;

  public PressureCooker(Context paramContext)
  {
    this.mContext = paramContext;
    SharedPreferences localSharedPreferences = PreferenceManager.getDefaultSharedPreferences(paramContext);
    this.mPressureProcessor = new CropProcessor(localSharedPreferences.getFloat("HISTORICAL_LOW_PRESSURE", (0.0F / 0.0F)), localSharedPreferences.getFloat("HISTORICAL_HIGH_PRESSURE", (0.0F / 0.0F)));
    this.mSizeProcessor = new LowpassProcessor(localSharedPreferences.getFloat("HISTORICAL_LOW_SIZE", (0.0F / 0.0F)), localSharedPreferences.getFloat("HISTORICAL_HIGH_SIZE", (0.0F / 0.0F)));
  }

  private float lerp(float paramFloat1, float paramFloat2, float paramFloat3)
  {
    return paramFloat1 * (1.0F - paramFloat3) + paramFloat3 * paramFloat2;
  }

  public float getFiltered(MotionEvent paramMotionEvent)
  {
    if ((Build.VERSION.SDK_INT >= 14) && (paramMotionEvent.getToolType(0) == 2));
    for (float f = this.mPressureProcessor.getFiltered(paramMotionEvent.getPressure()); ; f = this.mSizeProcessor.getFiltered(paramMotionEvent.getSize()))
      return lerp(0.0F, 40.0F, f * (f * f));
  }

  public float getHistoricalFiltered(MotionEvent paramMotionEvent, int paramInt)
  {
    if ((Build.VERSION.SDK_INT >= 14) && (paramMotionEvent.getToolType(0) == 2));
    for (float f = this.mPressureProcessor.getFiltered(paramMotionEvent.getHistoricalPressure(paramInt)); ; f = this.mSizeProcessor.getFiltered(paramMotionEvent.getHistoricalSize(paramInt)))
      return lerp(0.0F, 40.0F, f * (f * f));
  }

  public void onPause()
  {
    SharedPreferences.Editor localEditor = PreferenceManager.getDefaultSharedPreferences(this.mContext).edit();
    localEditor.putFloat("HISTORICAL_LOW_PRESSURE", this.mPressureProcessor.mLowestInput);
    localEditor.putFloat("HISTORICAL_HIGH_PRESSURE", this.mPressureProcessor.mHighestInput);
    localEditor.putFloat("HISTORICAL_LOW_SIZE", this.mSizeProcessor.mLowestInput);
    localEditor.putFloat("HISTORICAL_HIGH_SIZE", this.mSizeProcessor.mHighestInput);
    ApiHelper.safeSharedPreferencesSave(localEditor);
  }

  public void resetLowPassFilter()
  {
    LowpassProcessor.access$002(this.mSizeProcessor, (0.0F / 0.0F));
  }

  private class CropProcessor
  {
    private static final float DEFAULT_VALUE = 0.01F;
    private static final int INITIALIZATION_SAMPLES = 400;
    public float mHighestInput;
    public float mLowestInput;
    private int mNeededSamples;

    public CropProcessor(float paramFloat1, float arg3)
    {
      this.mLowestInput = paramFloat1;
      Object localObject;
      this.mHighestInput = localObject;
      this.mNeededSamples = 0;
    }

    public float getFiltered(float paramFloat)
    {
      if ((this.mLowestInput != this.mLowestInput) || (this.mHighestInput != this.mHighestInput))
      {
        this.mLowestInput = paramFloat;
        this.mHighestInput = paramFloat;
        this.mNeededSamples = 400;
        Toast.makeText(PressureCooker.this.mContext, 2131624111, 1).show();
      }
      float f1;
      if (paramFloat < this.mLowestInput)
      {
        this.mLowestInput = paramFloat;
        f1 = (paramFloat - this.mLowestInput) / (this.mHighestInput - this.mLowestInput);
        if (f1 <= 1.0F)
          break label152;
        f1 = 1.0F;
      }
      while (true)
      {
        if (this.mNeededSamples > 0)
        {
          this.mNeededSamples = (-1 + this.mNeededSamples);
          float f2 = this.mNeededSamples / 400.0F;
          f1 = 0.01F * f2 + f1 * (1.0F - f2);
        }
        return f1;
        if (paramFloat <= this.mHighestInput)
          break;
        this.mHighestInput = paramFloat;
        break;
        label152: if (f1 < 0.0F)
          f1 = 0.0F;
      }
    }
  }

  private class LowpassProcessor extends PressureCooker.CropProcessor
  {
    private static final float LOWPASS_RATE = 0.1F;
    private float mOldVal = (0.0F / 0.0F);

    public LowpassProcessor(float paramFloat1, float arg3)
    {
      super(paramFloat1, localObject);
    }

    public float getFiltered(float paramFloat)
    {
      if (this.mOldVal != this.mOldVal)
        this.mOldVal = paramFloat;
      for (float f = this.mOldVal; ; f = this.mOldVal)
      {
        return super.getFiltered(f);
        this.mOldVal = (0.9F * this.mOldVal + 0.1F * paramFloat);
      }
    }
  }
}

为了让事情变得更奇怪,它不是参考或在任何地方使用!

认真。它只是一个从未在任何地方实际使用的随机类:

不知道怎么想这个,我已经把它放在这里看看是否还有其他人反转Snapchat应用程序并使用谷歌搜索此代码。

如果您正在撤消代码并获得更多信息,请在评论中告诉我或亲自告诉我,因为我对此为何会感兴趣。


少客联盟- 版权声明 1、本主题所有言论和图片纯属会员个人意见,与少客联盟立场无关。
2、本站所有主题由该帖子作者发表,该帖子作者admin少客联盟享有帖子相关版权。
3、少客联盟管理员和版主有权不事先通知发贴者而删除本文。
4、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者admin少客联盟的同意。
5、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任。
6、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责。
7、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意。
8、官方反馈邮箱:chinasuc@chinasuc.cn


上一篇:CSAW 2013 WidgetCorp撰写
下一篇:分析SSH crc32补偿攻击探测器漏洞利用
Whatever is worth doing is worth doing well. juvenile hacker league
最新回复 (0)
    • 少客联盟
      2
        登录 注册 QQ登录(停用)
返回