安卓逆向学习笔记(一)

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

安卓逆向学习笔记(一)

  • 写一个安卓程序(附上原帖链接教我兄弟学Android逆向01)
    安装所需软件android studio,因为貌似被墙了所以没有用官网下载。
    官网下载链接及教程,链接官网下载链接,教程安装及下载教程
    网上另找的资源(内附教程)android studio v3.0网盘下载
    百度网盘下载太慢解决链接(可能用不了,自行解决谢谢):传送门

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

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

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

安卓逆向学习笔记(一)_第2张图片

【2】变量名:CLASSPATH       变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;安卓逆向学习笔记(一)_第3张图片
【3】变量名:PATH       变量值(两个变量值):%JAVA_HOME%\bin%      JAVA_HOME%\jre\bin

安卓逆向学习笔记(一)_第4张图片

【4】检测是否配置成功

      win+R 打开 cmd,输入 java,出现一连串的指令提示,说明配置成功了:
输入 java
安卓逆向学习笔记(一)_第5张图片
输入javac
安卓逆向学习笔记(一)_第6张图片
输入java -version
安卓逆向学习笔记(一)_第7张图片
到这里就成功配置好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代码




    

    

    

    

    

在手机上运行的效果图
安卓逆向学习笔记(一)_第8张图片
安卓逆向学习笔记(一)_第9张图片
然后先解决几个小问题,比如说什么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 ,查看原因
如图
安卓逆向学习笔记(一)_第10张图片
下面是主程序代码

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版本,因为有一个安卓逆向学习笔记(一)_第11张图片
有一个右键工具,在以后的逆向过程中很方便。
我还是比较喜欢自己写一个签名,写一个自己的签名方法传送门

你可能感兴趣的:(安卓逆向笔记,安卓逆向,java环境配置)