Android 11拍照强制声音
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 11拍照强制声音相关的知识,希望对你有一定的参考价值。
参考技术A 1.手机必须ROOT 2.必须装有RE管理器 步骤: 1.先进入相机,把快门声音设为3;(本人原来设置的快门声音 为1,结果打开后没有出现下面第三点的文本,改为声音3之后,再进去看就有了)2.打开RE管理器,路径data/data/com.sec.android.app.camera/shared_prefs用编辑文件模式打开com.sec.android.app.camera_preferences.xml(长按文本,往下拉会有这个选项);
3.把"pref_setup_shuttersound_key"value="1"中的1(或者是2/3)改成0。
4.退出并点击保存。
5.退回上一级菜单会发现多了一个副本,把副本删掉。
6.完成,到相机里面看看快门声音那里是不是已经自动设置为“关”,进入更换声音仍然会显示原来的1、2、3,这个是自动设置为关的,并没有选项! 这个太复杂,继续看下面。 最简单实用的方法是下载Camera 360等第三方软件,用它来拍照可以选择静音拍摄,非常方便,而且功能很多。
Android逆向系列文章— Android基础逆向
0×00 前言
不知所以然,请看
以及java系列:
内容or问题
1.如何写一个登录界面? √
2.逆向分析登录逻辑 √
3.如何暴力绕过一个登录界面? √
4.如何巧妙登录 √
5..如何加广告√
6.如何去广告
7.实例分析
时间
2018年2月4日13:10:42
目的
1.复习登录界面的书写
2.暴力练习
3.获取练习
4.smali代码熟练
5.给自己的app加广告
6.二次打包加广告实战
7.如何去广告
0×01 Android 编程—登录界面
说明
这个是学编程的时候必须要学的,这次我们就不接数据库来操作。也没有注册界面,直接就是一个简单的登录界面。
demo还是按照之前的改。恩,反正我会,我就要偷懒。
1.更改布局
然后一个登录密码的框框。
然后还是一个登录按钮
预览一下我们的界面
好丑,做一个简单的调整,整体代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.hanlei.first_demo.MainActivity">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/name"
android:hint="请输入用户名"
/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/password"
android:hint="请输入密码"
/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/bt"
android:text="Login"/>
</LinearLayout>
2.绑定控件
恩,为了像一个登录界面,我把name也改了。
所以重新绑定。
3.逻辑书写
login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (name.getText().toString().equals("zhuzhu")&&Integer.parseInt(ps.getText().toString())==520)
{
startActivity(new Intent(MainActivity.this,Main2Activity.class));
}
}
});
这里涉及到一个知识点。
java String 类型如何转换为int类型。
简单的来说:
Integer.parseInt();
就可以转换了
这里突然想到万一不输入数字怎么办。恩,去改下规范。
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/password"
android:inputType="number"
android:hint="请输入密码"
/>
这里加了一行只允许输入数字。
测试
0×02 反编译分析
分析嘛,很多次了。老规矩
1. Android Killer
2.找到主要函数
我们找到逻辑判断的地方$1
.class Lcom/example/hanlei/first_demo/MainActivity$1;
.super Ljava/lang/Object;
.source "MainActivity.java"
# interfaces
.implements Landroid/view/View$OnClickListener;
# annotations
.annotation system Ldalvik/annotation/EnclosingMethod;
value = Lcom/example/hanlei/first_demo/MainActivity;->onCreate(Landroid/os/Bundle V
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x0
name = null
.end annotation
# instance fields
.field final synthetic this$0:Lcom/example/hanlei/first_demo/MainActivity;
# direct methods
.method constructor <init>(Lcom/example/hanlei/first_demo/MainActivity V
.locals 0
.param p1, "this$0" # Lcom/example/hanlei/first_demo/MainActivity;
.prologue
.line 24
iput-object p1, p0, Lcom/example/hanlei/first_demo/MainActivity$1;->this$0:Lcom/example/hanlei/first_demo/MainActivity;
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
# virtual methods
.method public onClick(Landroid/view/View V
.locals 4
.param p1, "v" # Landroid/view/View;
.prologue
.line 27
iget-object v0, p0, Lcom/example/hanlei/first_demo/MainActivity$1;->this$0:Lcom/example/hanlei/first_demo/MainActivity;
# getter for: Lcom/example/hanlei/first_demo/MainActivity;->name:Landroid/widget/EditText;
invoke-static {v0}, Lcom/example/hanlei/first_demo/MainActivity;->access$000(Lcom/example/hanlei/first_demo/MainActivity Landroid/widget/EditText
;
move-result-object v0
invoke-virtual {v0}, Landroid/widget/EditText;->getText()Landroid/text/Editable;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/Object;->toString()Ljava/lang/String;
move-result-object v0
const-string v1, "zhuzhu"
invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object Z
move-result v0
if-eqz v0, :cond_0
iget-object v0, p0, Lcom/example/hanlei/first_demo/MainActivity$1;->this$0:Lcom/example/hanlei/first_demo/MainActivity;
# getter for: Lcom/example/hanlei/first_demo/MainActivity;->ps:Landroid/widget/EditText;
invoke-static {v0}, Lcom/example/hanlei/first_demo/MainActivity;->access$100(Lcom/example/hanlei/first_demo/MainActivity Landroid/widget/EditText
;
move-result-object v0
invoke-virtual {v0}, Landroid/widget/EditText;->getText()Landroid/text/Editable;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/Object;->toString()Ljava/lang/String;
move-result-object v0
invoke-static {v0}, Ljava/lang/Integer;->parseInt(Ljava/lang/String I
move-result v0
const/16 v1, 0x208
if-ne v0, v1, :cond_0
.line 29
iget-object v0, p0, Lcom/example/hanlei/first_demo/MainActivity$1;->this$0:Lcom/example/hanlei/first_demo/MainActivity;
new-instance v1, Landroid/content/Intent;
iget-object v2, p0, Lcom/example/hanlei/first_demo/MainActivity$1;->this$0:Lcom/example/hanlei/first_demo/MainActivity;
const-class v3, Lcom/example/hanlei/first_demo/Main2Activity;
invoke-direct {v1, v2, v3}, Landroid/content/Intent;-><init>(Landroid/content/Context;Ljava/lang/Class V
invoke-virtual {v0, v1}, Lcom/example/hanlei/first_demo/MainActivity;->startActivity(Landroid/content/Intent V
.line 31
:cond_0
return-void
.end method
3.重点逻辑部分
重点逻辑就是如何判断登录的部分
if-eqz v0, :cond_0
iget-object v0, p0, Lcom/example/hanlei/first_demo/MainActivity$1;->this$0:Lcom/example/hanlei/first_demo/MainActivity;
# getter for: Lcom/example/hanlei/first_demo/MainActivity;->ps:Landroid/widget/EditText;
invoke-static {v0}, Lcom/example/hanlei/first_demo/MainActivity;->access$100(Lcom/example/hanlei/first_demo/MainActivity Landroid/widget/EditText
;
move-result-object v0
invoke-virtual {v0}, Landroid/widget/EditText;->getText()Landroid/text/Editable;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/Object;->toString()Ljava/lang/String;
move-result-object v0
invoke-static {v0}, Ljava/lang/Integer;->parseInt(Ljava/lang/String I
move-result v0
const/16 v1, 0x208
if-ne v0, v1, :cond_0
.line 29
iget-object v0, p0, Lcom/example/hanlei/first_demo/MainActivity$1;->this$0:Lcom/example/hanlei/first_demo/MainActivity;
new-instance v1, Landroid/content/Intent;
iget-object v2, p0, Lcom/example/hanlei/first_demo/MainActivity$1;->this$0:Lcom/example/hanlei/first_demo/MainActivity;
const-class v3, Lcom/example/hanlei/first_demo/Main2Activity;
invoke-direct {v1, v2, v3}, Landroid/content/Intent;-><init>(Landroid/content/Context;Ljava/lang/Class V
invoke-virtual {v0, v1}, Lcom/example/hanlei/first_demo/MainActivity;->startActivity(Landroid/content/Intent V
我们看到了两个if语言
整个逻辑就是先进行一个判断,然后进行另外一个判断。就是满足第一个if语句,然后满足第二个if语句才到结束。
这些smali代码就是我们之前分析过很多次的语句,没有什么难的地方,都很简单的。
0×03 暴力美学
我们来尝试破解。
方法 1
思路
既然有if语句进行判断,那我把if语句删了。编程现在这个样子:
invoke-static {v0}, Lcom/example/hanlei/first_demo/MainActivity;->access$000(Lcom/example/hanlei/first_demo/MainActivity Landroid/widget/EditText
;
move-result-object v0
invoke-virtual {v0}, Landroid/widget/EditText;->getText()Landroid/text/Android 11 拍照问题