Android逆向-java代码基础
作者:I春秋作家——HAI_
0×00 前言
看这篇可以先看看之前的文章,进行一个了解。
Android逆向-java代码基础(1)
Android逆向-java代码基础(2)
之前看到有大佬用smali写了一个demo,是一个加法程序。这篇也主要是讲一下关于java的基本的计算,毕竟这个是基础。可能要同时写一下Android基础。
文章里的内容可以选读,里面会有一些问题的解决方式。也可以读一下。
0×01 java 加法运算
这个运算和数学里运算一样,这里写一个简单的demo。
1.int加法
1.1 简单的demo
public class add{
public static void main(String[]args)
{
int a=10;
int b=11;
b=a+b;
System.out.println(b);
}
}
1.2 编译运行输出结果。

1.3 class文件探索。
1.3.1 这里是上两节讲的常量池。

1.3.2 访问标志(access_flags)

(1)ACC_ENUM标志位
首先来看这个,如果定义了枚举类,那么JVM虚拟机就会把access_flags的第二位为1。
(2)ACC_ANNOTATION标志位
看单词的含义ANNOTAION注释,这里就是如果有注解类,KVM就会把access_flags的第三位置为1
(3)ACC_SYNTHETIC标志位
如果不是JVM编译器编译的,是用户自己的就会把第四位置为1。
(4)ACC_ABSTARACT标志位
定义某一个类的时候,JVM会把ACC_ABSTARACT标志位置为1。
(5)ACC_INTERFACE标志位
定义接口的时候,JVM会把ACC_INTERFACE标志位置为1。
(6)ACC_SUPER标志位
对于定义的类,JVM会把ACC_SUPER标志位置为1。
(7)ACC_FINAL标志位
如果类被声明了final类型,如果是,就会把ACC_FINAL标志位置为1。
(8)ACC_PUBLIC标志位
如果类被声明了public类型,JVM就会把ACC_PUBLIC标志位置为1。
1.3.3 该文件探索

1.4 更简单的查看方式。

javap -v name;
直接查看即可。
1.5 smali文件分析
这里就不详细介绍,class文件是怎样转换成smali文件的方法了。详细请参考
Android逆向-java代码基础(1)
1.5.1这个是smali代码的整体情况。

1.5.2必备的一个

1.5.3 main函数

2 float加法
2.1 demo
public class add{
public static void main(String[]args)
{
float a=1.1f;
System.out.println(a+a);
}
}
2.2 class文件分析

2.3 smali文件分析
2.3.1 必备

2.3.2main

add-float/2addr vx,vy #Adds vy to vx.
也就是说把vx和vy的值相加。
其他的语法我们都是见过的,而且在Android逆向-java代码基础(2)中非常详细的讲解过,这里就不赘述了。
3尝试使用smali写一段代码。
3.1demo
.class public Ladd;
.super Ljava/lang/Object;
.source "add.java" .method public constructor <init>()V
.registers 1 .prologue
.line 1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V return-void
.end method .method public static main([Ljava/lang/String;)V
.registers 3 .prologue #start
const v0,0x3f8ccccd const v1,0x4f8ccccd sget-object v2,Ljava/lang/System;->out:Ljava/io/PrintStream; add-float/2addr v0,v1 invoke-virtual {v2,v0},Ljava/io/PrintStream;->println(F)V return-void
.end method
3.2jar编译

0×02 结束语
1.又写了一天,很多东西等着我去学习,在学习的过程中,越理解明白的就越多。今天勉强算是完成了一个应该完成的东西。smali文件的结构也差不多可以了。我觉得同步Android Studio学习可以开始了。
2.当然java还是要接着复习的,不过以我现在的这种进度,真的是有一点慢呢。不过慢归慢,还是可以学到之前没有学到的东西。
3.准备每一天破解一个简单的apk,虽然是简单,但是也可以增强自己对APP的了解。至于破解的教程就不进行说明了。
不过可能会进行一个资料的收集。
微博:HAI_AI_ZHUZHU
>>>>>>黑客入门必备技能 带你入坑,和逗比表哥们一起聊聊黑客的事儿,他们说高精尖的技术比农药都好玩!
Android逆向-java代码基础的更多相关文章
- js调用android本地java代码
js调用android本地java代码 当在Android上使用WebView控件开发一个Web应用时,可以创建一个通过Javascript调用Android端java代码的接口.也就是可以通过Jav ...
- Android在java代码中设置margin
我们平常可以直接在xml里设置margin,如: <ImageView android:layout_margin="5dip" android:src="@dra ...
- Android视频通话Java代码
近期学习Android平台下跨平台音视频通信开发,尽管网上有非常多开源项目供我们參考学习.但音视频效果非常一般,还有非常多不稳定的因素,毕竟是开源嘛.在国内我找到了一个比較好音视频通信解决方式(百 ...
- Unity 中调用Android的JAVA代码
首先我们要创建一个android项目 因为项目需要使用Unity提供的接口,所以需要将接口classes.jar引入至当前工程但中.接口包的所在地,打开Finder->应用程序->Unit ...
- Android中用Java代码实现zip文件解压缩
如果需要下载的文件有很多是中文名的,解压时有中文名的文件出现乱码,试了很多方法不能解决问题.据说有一个Java插件包,用这个插件包可以解决中文名乱码的问题,但不知解压的文件是否要用它提供的类压缩后的文 ...
- Android动态Java代码调整window大小
Android调整window大小 举一个例子,设置当前的APP所需要的屏幕高度为设备高度的一半: Window window = getActivity().getWindow(); WindowM ...
- android 用java代码设置布局、视图View的宽度/高度或自适应
在achat项目中,对话内容的长宽设置为自适应.可是假设文本内容太多,则宽度几乎相同布满,若自己说的和对方说的都非常多内容.则满屏都是文字.则不easy分辨出是来自别人说的还是自己说的.那么须要对本身 ...
- Android逆向系列文章— Android基础逆向(6)
本文作者:HAI_ 0×00 前言 不知所以然,请看 Android逆向-Android基础逆向(1) Android逆向-Android基础逆向(2) Android逆向-Android基础逆向(2 ...
- Android逆向-Android基础逆向(5)
本文作者:i春秋作家——HAI_ 0×00 前言 不知所以然,请看 Android逆向-Android基础逆向(1)Android逆向-Android基础逆向(2)Android逆向-Android基 ...
随机推荐
- static 和 final
static是静态修饰关键字,可以修饰变量和程序块以及类方法:当你定义一个static的变量的时候jvm会将将其分配在内存堆上,所有程序对它的引用都会指向这一个地址而不会重新分配内存:修饰一个程序块的 ...
- SEO方式之HTTPS 访问优化详解
SEO到底要不要做HTTPS?HTTPS对SEO的重要性 正方观点 1.HTTPS具有更好的加密性能,避免用户信息泄露: 2.HTTPS复杂的传输方式,降低网站被劫持的风险: 3.搜索引擎已经全面支持 ...
- spring boot web项目在IDEA下热部署解决办法(四步搞定)
最近在用spring boot 做一个web站点,修改了类.html.js等,刷新页面,没有生效,非要手动去make一下或者重启,大大降低了开发效率. 什么是热部署? 应用启动后会把编译好的Class ...
- 疯狂安装oracle 12c,此版本没有scott这个用户
今天要学习oracle,然后寻思下个吧,结果出现了很多问题,在此分享一下,搞疯了,太痛苦了,学的教程是用的 Oracle 11g,我去官网下载的Oracle 12g,文件很大,好不容易装好了,寻思就这 ...
- 用原生的javascript 实现一个无限滚动的轮播图
说一下思路:和我上一篇博客中用JQ去写的轮播图有相同点和不同点 相同点: 首先页面布局是一样的 同样是改变.inner盒子的位置去显示不同的图片 不同点: 为了实现无限滚动需要多添加两张重复的图片 左 ...
- Proxy Hosted Virtual
http://books.sonatype.com/nexus-book/reference/confignx-sect-manage-repo.html Public Repositories 对外 ...
- linux的客户端安装步骤配置
现有一个***.tar.gz的客户端软件,现在客户端安装步骤如下 说明:此软件是一个网络客户端认证软件,因为采用虚拟机中的linux主机,所以此主机的网路配置从只能使用Bridge模式,而不能使用NA ...
- C++中的矩阵运算
C++中的矩阵运算 1. 2阶矩阵的逆矩阵公式
- 1. Two Sum [Array] [Easy]
Given an array of integers, return indices of the two numbers such that they add up to a specific ta ...
- kafka不停止服务的情况下修改日志保留时间
kafka配置文件如下: broker.id=1 port=9092 host.name=ssy-kafka1 num.network.threads=4 num.io.threads=8 socke ...