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基 ...
随机推荐
- glog日志
google 开源日志库 #include <glog/logging.h> yum install glog
- 使用 EWS(Exchange Web Service)协议读取邮件、发送邮件
问题: 公司之前可以通过POP3协议收发邮件,因而在SoapUI中用JavaMail可以读取邮件,后来配置了Office 365,POP3协议端口不再开放,邮件全部读取失败,报login timeou ...
- 13 Maven 编写插件
Maven 编写插件 Maven 的任何行为都是由插件完成的,包括项目的清理.绵编译.测试以及打包等操作都有其对应的 Maven 插件.每个插件拥有一个或者多个目标,用户可以直接从命令行运行这些插件目 ...
- UI设计规范:单选按钮 vs 复选框,没那么简单
无论是网页设计,还是移动app设计,都经常用到单选按钮和复选框这两个组件.这两个组件看似意义明确,很好区分,但在实际设计中却很容易用错,带来不好的用户体验. 本文中我通过列举几个典型的错误用法,帮助设 ...
- 如何使用tapd?
tapd 可以编写测试用例 测试计划等 敏捷开发常用的工具.稍后会更新..
- 使用delphi 开发多层应用(二十二)使用kbmMW 的认证管理器
从kbmmw 4.4 开始,增加了认证管理器,这个比原来的简单认证提供了更多的功能.细化了很多权限操作. 今天对这一块做个介绍. 要做一个认证管理,大概分为以下5步: 1. 定义你要保护的资源,一般 ...
- Part 2 - Fundamentals(4-10)
https://simpleisbetterthancomplex.com/series/2017/09/11/a-complete-beginners-guide-to-django-part-2. ...
- 整数重复的第n位计算公式
513不停的重复形成513513513....,求第n位是几的计算公式.
- js基础学习笔记(四)
4.1 什么是数组 我们知道变量用来存储数据,一个变量只能存储一个内容,存储多个值时,就需要用到数组. 数组是一个值的集合,每个值都有一个索引号,从0开始,每个索引都有一个相应的值,根据需要添加更多数 ...
- [译]window.onerror事件
本文翻译youtube上的up主kudvenkat的javascript tutorial播放单 源地址在此: https://www.youtube.com/watch?v=PMsVM7rjupU& ...