安卓逆向学习笔记(一)

	这些都是通过学长给予,以及网络上的资源来做的个人理解、总结,大牛们不要喷。
零基础小萌新在角落瑟瑟发抖的认真记笔记。

安卓逆向学习笔记(一)

1、JAVA 环境配置(请大佬自动略过)

      先下载jdk(最好安装在C盘,默认安装),请自行搜索。因为安卓为java开发所以配置java环境尤为重要:
    (1)右键单击电脑——>打开属性——>高级系统设置——>环境变量(下图示)在这里插入图片描述
然后在系统变量中添加3个变量:

【1】、变量名:JAVA _HOME       变量值:你的jdk安装路径

在这里插入图片描述

【2】变量名:CLASSPATH       变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;在这里插入图片描述
【3】变量名:PATH       变量值(两个变量值):%JAVA_HOME%\bin%      JAVA_HOME%\jre\bin

在这里插入图片描述

【4】检测是否配置成功

      win+R 打开 cmd,输入 java,出现一连串的指令提示,说明配置成功了:
输入 java
在这里插入图片描述
输入javac
在这里插入图片描述
输入java -version
在这里插入图片描述
到这里就成功配置好java环境了

2、开始写第一个安卓程序

打开我们的android studio,当我准备开始编写的时候发现很多错误,进行很不顺利,列出部分错误解决方法:
所有版本sdk下载方法及Android Studio无法显示Design视图解决方法
在安装时可能无法勾选sdk下载解决方法
Error:Execution failed for task ':app:preDebugAndroidTestBuild’解决方法
Error:Failed to find Build Tools revision 26.0.2解决方法
然后就是了解一下ConstraintLayout传送门
然后开心的开始写一个简单的界面(可以先看一下别人写的讲解比较详细传送门)
下面是activity_main.xml代码

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.myh18.myapplication.Login">

    <TextView
        android:id="@+id/textView4"
        android:layout_width="wrap_content"
        android:layout_height="28dp"
        android:text="@string/app_name"
        android:textAppearance="@style/TextAppearance.AppCompat.Large"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.0" />

    <EditText
        android:id="@+id/userEdit"//这个就是id的名字,划重点主程序直接可以调用
        android:layout_width="wrap_content"
        android:layout_height="49dp"
        android:layout_marginBottom="8dp"
        android:ems="10"
        android:inputType="textPersonName"
        android:text="@string/message2"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.792"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.429" />

    <EditText
        android:id="@+id/passwordEdit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="68dp"
        android:ems="10"
        android:inputType="textPersonName"
        android:text="@string/message3"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.792"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/userEdit" />

    <android.support.constraint.Guideline
        android:id="@+id/guideline"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        app:layout_constraintGuide_end="384dp" />

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:onClick="thisButtonLogin"
        android:text="@string/message4"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.664"
        app:layout_constraintStart_toEndOf="@+id/guideline"
        app:layout_constraintTop_toBottomOf="@+id/userEdit"
        app:layout_constraintVertical_bias="0.522" />

    <TextView
        android:id="@+id/textView"
        android:layout_width="57dp"
        android:layout_height="29dp"
        android:text="@string/message5"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toStartOf="@+id/userEdit"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toEndOf="@+id/guideline"
        app:layout_constraintTop_toBottomOf="@+id/textView4"
        app:layout_constraintVertical_bias="0.4" />

    <TextView
        android:id="@+id/textView5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/message6"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toStartOf="@+id/passwordEdit"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toEndOf="@+id/guideline"
        app:layout_constraintTop_toBottomOf="@+id/textView"
        app:layout_constraintVertical_bias="0.313" />

</android.support.constraint.ConstraintLayout>

在手机上运行的效果图
在这里插入图片描述
在这里插入图片描述
然后先解决几个小问题,比如说什么Error:Execution failed for task ‘:app:compileDebugJavaWithJavac’. > Compilation failed;
see the comp
这可能是因为buildToolsVersion版本不一致,打开build.gradle
然后在dependencies里面写入格式为androidTestCompile('com.android.support:support-annotations:'版本') { force = true }
这样就可以了
然后就是查看代码错在哪里,方法如下
点击Terminal输入gradlew compileDebugSources --stacktrace -info ,查看原因
如图
在这里插入图片描述
下面是主程序代码

package com.example.myh18.myapplication;//这是自己application保存的路径

import android.content.DialogInterface;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.EditText;
import android.os.Bundle;
import com.example.myh18.myapplication.R;//R包,这个不能直接复制粘贴,有报错直接alt+enter生成对应R包即可


public class Login extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);//activity_main就是你界面的名称
    }
    public void thisButtonLogin(View view){
        //接收按钮按下事件

        //获取用户输入的账号和密码
        EditText editText = (EditText)findViewById(R.id.userEdit);
        String user = editText.getText().toString();
        editText = (EditText)findViewById(R.id.passwordEdit);
        String pw = editText.getText().toString();

        //这一段是测试的遗留的,用来在判断前输出输入的账号内容
        //AlertDialog.Builder message = new AlertDialog.Builder(this);
        //message.setMessage(user);
        //message.setPositiveButton("确定",click1);
        //AlertDialog message1 = message.create();
        //message1.show();

        //判断两个编辑框内容是否为空
        if (user == null || user.length() == 0) {
            AlertDialog.Builder usermessage=new AlertDialog.Builder(this);
            usermessage.setMessage("用户名不能为空!");
            usermessage.setPositiveButton("确定",click1);
            AlertDialog usermessage1=usermessage.create();
            usermessage1.show();
        }else if(pw == null || pw.length() == 0) {
            AlertDialog.Builder pwmessage=new AlertDialog.Builder(this);
            pwmessage.setMessage("密码不能为空!");
            pwmessage.setPositiveButton("确定",click1);
            AlertDialog pwmessage1=pwmessage.create();
            pwmessage1.show();
        }else{
            //弹出信息框,显示用户输入的账号和密码
            AlertDialog.Builder winmessage = new AlertDialog.Builder(this);
            winmessage.setMessage("账号:"+user+"\n"+"密码:"+pw);
            winmessage.setPositiveButton("确定",click2);
            AlertDialog winmessage2 = winmessage.create();
            winmessage2.show();
        }
    }
    private DialogInterface.OnClickListener click1 = new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            dialog.cancel();
        }
    };
    private DialogInterface.OnClickListener click2 = new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            android.os.Process.killProcess(android.os.Process.myPid());
        }
    };
}

然后就可以开心的bulid啦,终于写完了第一个app程序。如果想在自己手机上运行,还要注意自己手机的android版本,屏幕分辨率。
补充知识点:然后签名方法如下,先呈上别人直接签名打包的方法传送门
再附上吾爱破解的工具包,签名很方便传送门推荐1.1版本,因为有一个在这里插入图片描述
有一个右键工具,在以后的逆向过程中很方便。
我还是比较喜欢自己写一个签名,写一个自己的签名方法传送门

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值