作者: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代码基础的更多相关文章

  1. js调用android本地java代码

    js调用android本地java代码 当在Android上使用WebView控件开发一个Web应用时,可以创建一个通过Javascript调用Android端java代码的接口.也就是可以通过Jav ...

  2. Android在java代码中设置margin

    我们平常可以直接在xml里设置margin,如: <ImageView android:layout_margin="5dip" android:src="@dra ...

  3. Android视频通话Java代码

      近期学习Android平台下跨平台音视频通信开发,尽管网上有非常多开源项目供我们參考学习.但音视频效果非常一般,还有非常多不稳定的因素,毕竟是开源嘛.在国内我找到了一个比較好音视频通信解决方式(百 ...

  4. Unity 中调用Android的JAVA代码

    首先我们要创建一个android项目 因为项目需要使用Unity提供的接口,所以需要将接口classes.jar引入至当前工程但中.接口包的所在地,打开Finder->应用程序->Unit ...

  5. Android中用Java代码实现zip文件解压缩

    如果需要下载的文件有很多是中文名的,解压时有中文名的文件出现乱码,试了很多方法不能解决问题.据说有一个Java插件包,用这个插件包可以解决中文名乱码的问题,但不知解压的文件是否要用它提供的类压缩后的文 ...

  6. Android动态Java代码调整window大小

    Android调整window大小 举一个例子,设置当前的APP所需要的屏幕高度为设备高度的一半: Window window = getActivity().getWindow(); WindowM ...

  7. android 用java代码设置布局、视图View的宽度/高度或自适应

    在achat项目中,对话内容的长宽设置为自适应.可是假设文本内容太多,则宽度几乎相同布满,若自己说的和对方说的都非常多内容.则满屏都是文字.则不easy分辨出是来自别人说的还是自己说的.那么须要对本身 ...

  8. Android逆向系列文章— Android基础逆向(6)

    本文作者:HAI_ 0×00 前言 不知所以然,请看 Android逆向-Android基础逆向(1) Android逆向-Android基础逆向(2) Android逆向-Android基础逆向(2 ...

  9. Android逆向-Android基础逆向(5)

    本文作者:i春秋作家——HAI_ 0×00 前言 不知所以然,请看 Android逆向-Android基础逆向(1)Android逆向-Android基础逆向(2)Android逆向-Android基 ...

随机推荐

  1. 移动端UI设计规范模板参考以及设计规范的好处

    2018也快要过完了(-_-),我们的移动端的UI设计规范也层出不穷.很多APP设计师也要在年底给公司或者是团队做一个总结.那么一个像样的APP ui设计规范也是很有必要的作品回顾. 在创业公司做着一 ...

  2. github 如何添加项目代码

    1.点添加一个resporitory 2.添加的时候一定要选上下面的添加readme这个选项 3.点进去点code就能create file了.贴上代码就行.主要是第二步必须选对

  3. HTTP Error 403.14问题处理

    打开目录浏览后,点击启用.

  4. bootstrap中让图片自适应不同的分辨率的方法

    boostrap中加上这个样式class="img-responsive"图片就可以自适应,手机端同样适用 详细介绍请查看全文:https://cnblogs.com/qianzf ...

  5. 2018.08.04 spoj TTM to the moon(主席树)

    spoj传送门 vjudge传送门 主席树板子题. 支持历史版本的区间和,区间和,区间修改和时光倒流. 其中新奇一点的也只有区间修改了,这个东西直接标记永久化就行了. 如果想下传标记的话也行,需要在p ...

  6. Django入门与实践-第12章:复用模板(完结)

    http://127.0.0.1:8000/http://127.0.0.1:8000/boards/1/http://127.0.0.1:8000/boards/2/http://127.0.0.1 ...

  7. Part 5 - Django ORM(17-20)

    https://github.com/sibtc/django-beginners-guide/tree/v0.5-lw from django.conf.urls import url from d ...

  8. APMServ—优秀的PHP集成环境工具

    经常折腾wordpress和各种php开发的cms,免不了要在本地测试这些程序,所以选择一款好的php集成环境就至关重要啦.之前在月光博客上看到有一篇“常见的WAMP集成环境”介绍,然后先后试用过XA ...

  9. Linux命令:sed

    简介 sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的 ...

  10. 怎么备份VMware虚拟磁盘文件或移植到其他虚拟机

    原文:http://jingyan.baidu.com/article/a681b0de17b3173b1843468f.html 方法/步骤     第一种方法:直接复制本地主机磁盘下的虚拟磁盘文件 ...