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

安卓逆向学习笔记(一)

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

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"><TextViewandroid: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" /><EditTextandroid: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" /><EditTextandroid: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.Guidelineandroid:id="@+id/guideline"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="vertical"app:layout_constraintGuide_end="384dp" /><Buttonandroid: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" /><TextViewandroid: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" /><TextViewandroid: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 {@Overrideprotected 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() {@Overridepublic void onClick(DialogInterface dialog, int which) {dialog.cancel();}};private DialogInterface.OnClickListener click2 = new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {android.os.Process.killProcess(android.os.Process.myPid());}};
}

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

安卓逆向学习笔记(一)相关推荐

  1. 安卓逆向学习笔记:native层开发、分析和调试基础

    安卓逆向学习笔记:native层开发.分析和调试基础 本笔记主要是自己看,所以如果有看不懂的地方也请多多包涵,这一篇的笔记主要是<Android应用安全防护和逆向分析>的部分内容. 一 A ...

  2. 安卓逆向学习第一天笔记

    >课1 安卓逆向学习-android 环境配置与常用工具介绍 1.简单介绍 android应用程序时采用JAVA语言开发的,完成源代码的开发后,首先将JAVA源码转换为字节码,然后通过DX工具, ...

  3. JS逆向学习笔记 - 持续更新中

    JS逆向学习笔记 寻找深圳爬虫工作,微信:cjh-18888 文章目录 JS逆向学习笔记 一. JS Hook 1. JS HOOK 原理和作用 原理:替换原来的方法. (好像写了句废话) 作用: 可 ...

  4. 安卓逆向学习资料推荐

    安卓逆向属于比较难得科目,下面有两点推荐 对于新手: 推荐学习视频 Android逆向线上全日制课程 对于有基础的朋友: 看雪安卓⾼级研修课2万班 看雪安卓⾼级研修课3万班 总体来说就是看雪的两个课程 ...

  5. 安卓逆向学习及APK抓包(二)--Google Pixel一代手机的ROOT刷入面具

    注意:本文仅作参考勿跟操作,root需谨慎,本次测试用的N手Pixel,因参考本文将真机刷成板砖造成的损失与本人无关 1 Google Pixel介绍 1.1手机 google Pixel 在手机选择 ...

  6. 记录第一次完整安卓逆向过程笔记

    文章目录 前言 一.安卓逆向的准备 二.刷机+配置+安装app 1.安卓系统版本 2.手机root+面具安装 3.xposed安装 三.逆向app 总结 前言 作为新时代爬虫er,逆向技能是必不可少的 ...

  7. 安卓逆向-入门笔记、相关知识点总结及思路

    文章目录 安卓逆向思路: 1.查壳 2.未加固 2.1 工具 2.2方法 3 .第一代加固 3.1 工具 3.2 方法 3.3 材料准备 3.4 实例 补充知识: 一.Android 1.加密原则: ...

  8. android逆向学习笔记,小肩膀安卓逆向百集-学习笔记

    APK 是 Android PacKage 的缩写,即 Android 安装包. APK 文件其实是 zip 格式,但后缀名被修改为 apk ,在 windows 上可以通过 winrar 等程序直接 ...

  9. 安卓开发学习笔记1:简单控件

    此文章仅为本人在学习安卓开发时的一些笔记 界面显示逻辑处理 使用XML标记.描绘应用界面,使用Java书写程序逻辑 使用XML描述APP界面 使用XML文件描述APP界面 一个界面布局可以被多处代码复 ...

最新文章

  1. 【其他】GIT常用原生命令
  2. iOS网络传输Delegate不被触发的本质原因
  3. Android 5.0 SEAndroid下如何获得对一个内核节点的访问权限
  4. 【前端积累】点击切换显示内容
  5. Android Telephony分析(六) ---- 接口扩展(实践篇)
  6. JZOJ 5419. 【NOIP2017提高A组集训10.24】筹备计划
  7. 【MFC】BitBlt详解
  8. STM32使用IIC总线通讯协议在OLED屏幕上显示字符串、汉字、图像(硬件IIC)
  9. MySQL:Innodb page clean 线程 (二) :解析
  10. (转)#ifndef的用法
  11. 【项目管理】合同和采购
  12. JAVA抽象类和接口的深入探讨
  13. LightTable:更改Julia代码字体和console中字体
  14. Qt三种方式实现背景色和背景图(都可放缩,qss方式也可以)
  15. 垂直居中对齐四种样式
  16. 用墨刀做出的交互动效,10个优秀作品欣赏
  17. 不同尺寸的手机屏幕其需要图片的分辨率和尺寸
  18. python自动刷手机视频_万能自动刷视频
  19. 深圳软件测试培训:瓶颈分析方法
  20. 硬件描述语言VHDL——并行语句

热门文章

  1. 经典的Times 33 哈希算法
  2. 记录下在线扩容服务器遇到的问题 NOCHANGE: partition 1 is size 419428319. it cannot be grown
  3. JS原生---歌词滚动效果案例
  4. 如何优化PNG,JPG图片减小图片文件大小
  5. 小米路由器 你的连接不是专用连接
  6. 类似微信群聊九宫格头像的算法实现
  7. echarts饼图pie中间显示总数
  8. 《MySQL系列》MySQL详细入门教程
  9. 如何给MySQL 数据瘦身
  10. C语言实现电脑定时关机