CTF-Bugku逆向题Android方法归纳

本文详细介绍了Android逆向分析在CTF挑战中的应用,涵盖多个题目,涉及函数如`reverse()`、`getString()`、`View`、`Handler`、`Native层`、`System.currentTimeMillis()`等,讲解了如何利用这些技术进行逆向工程分析,包括字符串操作、UI交互、JNI调用、定时器与多线程等知识点。
摘要由CSDN通过智能技术生成

1.signin题目:

reverse()

功能:反转数组里的元素的顺序
语法:arrayobject.reverse.()
这类方法会改变原来的数组,不可逆转

tostring()

功能:将各类进制的数字转化为字符串
语法:number.toString(radix)(radix代表进制数)
字符串的管理地方是string.xml
java在引用函数时要倒着引用

StringBuffer

当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。
和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。
在使用 StringBuffer 类时,每次都会对 StringBuffer 对象本身进行操作,而不是生成新的对象,所以如果需要对字符串进行修改推荐使用 StringBuffer。
StringBuilder 类在 Java 5 里被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。
由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。
在这里插入图片描述

Toast:

Android里的Toast是一类简易的消息提示框。Toast是包含用户点击消息。Toast类会帮助你创建和显示这些。
当视图显示给用户,在应用程序里显示为浮动。
Toast类的思想就是尽可能不引人注意,同时还向用户显示信息,希望他们看到。而且Toast显示的时间有限,Toast会根据用户设置的显示时间后自动消失。
Toast 最常见的创建方式是使用静态方法 Toast.makeText。
例如:
Toast.makeText(MainActivity.this, text “”, Toast.LENGTH_SHORT).show();
分析:
Toast是为了提醒用户,而又不影响用户的操作的提示栏。
方法里的MainActivity.this表示在MainActivity这个文件里显示;
text在后面的引号里输入想输出的文本。
text可以替换为R.string.自己定义的文本,表示引用string下的文本的资源;
LENGTH_SHORT表示Toast的显示时间一微秒计算,这里调用系统定义好的时间,也可自己写入确定的时间。
.show(); 是用来将定义好的Toast显示在MainActivity里的,如果不调用.show();方法定义的Toast就没有任何意义。

getBaseContext()

getBaseContext() 返回由构造函数指定或setBaseContext()设置的上下文
可以使用getContext()获取视图对象的上下文。 如果要创建一个只要存在活动就存在的新对象,则使用活动上下文或this,否则,活动将不会被破坏并最后导致内存泄漏。 如果需要与应用程序的全局生命周期相关联的上下文,并且应该在需要创建当前活动之外存在的对象的任何地方使用上下文,则可以使用getApplicationContext()。
View.getContext():返回视图当前运行的上下文。通常是当前活跃的活动。
Activity.getApplicationContext():返回整个应用程序的上下文(所有活动都在其内部运行的进程)。如果您需要一个与整个应用程序的生命周期相关联的上下文,而不仅仅是当前的活动,请使用它而不是当前的活动上下文。
ContextWrapper.getBaseContext()如果需要从另一个上下文里访问上下文,则采纳
ContextWrapper。从ContextWrapper内部引用的上下文通过getBaseContext()访问。

getString

getString表示以 Java 编程语言里String的形式获取此 ResultSet对象的当前行里指定列的值。

onCreate()

对onCreate()方法用super.onCreate()方法的理解,
首先要知道super.onCreate()方法的作用,就是用父类的onCreate方法记住当前活动的镜像,当下次再执行到这个活动的时候还是从这个镜像开始执行
但是此处需用super,因为这是调用父类的方法,为什么不能用this,是因为在子类里有一个和父类同名的方法就是onCreate,如果用this,就是用本类的实例来调用onCreate,而它偏偏又写在了onCreate里,这就形成了递归调用,所以一定要用super

如果写在你自己定义的一个OnCreate(),在这个函数里写调用OnCreate的话,需要写super.OnCreate(),否则会递归调用,
其他地方写的话,super是调用父类的,this是调用你覆盖的,不过一般没有人会去手动调用这玩意吧,因此一般是调用super.OnCreate().
首先我们可以看到, HelloWorldActivity 是继承自 Activity 的。 Activity 是 Android 系统提供的一个活动基类, 我们项目里所有的活动都需要继承它才能拥有活动的特性。 然后可以 看到HelloWorldActivity里有两个方法, onCreateOptionsMenu()这个方法是用于创建菜单的, 我们可以先无视它, 主要看下 onCreate()方法。 onCreate()方法是一个活动被创建时要执行的方法, 其里只有两行代码, 并且没有 Hello world!的字样。那么图 1.15里显示的 Hello world! 是在哪里定义的呢? 其实 Android程序的设计讲究逻辑和视图分离, 因此是不推荐在活动里直接编写界面的, 更加通用的一类做法是, 在布局文件里编写界面,然后在活动里引入进来。你可以看到,在 onCreate()方法的第二行调用了 setContentView()方法,就是这个方法给当前的活动引入了一 个 hello_world_layout 布局,那 Hello world!一定就是在这里定义的了!

setContentView()

在Acitivty里setContentView()用来设置布局文件

findViewById()

findViewById()是找xml布局文件下的具体widget控件(如Button、TextView等)。

setOnClickListener监听

Android onClick 与 setOnClickListener区别
为Android Widgets添加点击事件处理函数有两类方法,一个是在Xml文件里添加onClick属性,然后在代码里添加对应的函数。另一个是直接在代码里添加setOnClickListener函数。两者什么区别呢?
者的共同点
两者底层没有区别。
两者的区别
使用第一类方法的注意事项:

  1. 事件处理函数为public的。
  2. 事件处理函数在Activity里定义。
  3. 事件处理函数需有一个View类型的参数。

getText()

getText()为返回数据窗口控件里悬浮在当前行列之上的编辑框里的文本。

Timer题目:

JEB相当于Windows平台上的IDA
smali代码:双击Bytecode,出现smali代码;相较于C之汇编,那么smali之于Java

onCreate:

一个activity启动回调的第一个函数就是onCreate,这个函数主要做这个activity启动的一些需要的初始操作的工作。
onCreate之后调用了还有onRestart()和onStart()等。

System.loadLibrary:

System.load 和 System.loadLibrary详解
1.它们都可以用来装载库文件,不论是JNI库文件还是非JNI库文件。在任何本地方法被调用之前需先用这个两个方法之一把相应的JNI库文件装载。
2.System.load 参数为库文件的绝对路径,可以是任意路径。
例如你可以这样载入一个windows平台下JNI库文件:
System.load(“C://Documents and Settings//TestJNI.dll”);。
3. Syste

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值