安卓逆向java基础

安卓逆向java基础攻防世界 Mobile easyjava 这个题说是 easyjava 但是我这个菜鸟一点也不觉得 easy 花了我 2 个小时才做出来 我太菜了 首先就是下载 apk 反编译出源代码 说到这里就不得不吐槽一下 Android 逆向助手这个工具 就是下面这个 它反编译出来的源代码竟然还少函数 导致我看了半天 总觉得少点什么 最后我用 jeb 反编译之后才发现

大家好,我是讯享网,很高兴认识大家。



攻防世界-Mobile-easyjava

这个题说是easyjava,但是我这个菜鸟一点也不觉得easy,花了我2个小时才做出来(我太菜了)。

首先就是下载apk,反编译出源代码,说到这里就不得不吐槽一下Android逆向助手这个工具(就是下面这个),它反编译出来的源代码竟然还少函数,导致我看了半天,总觉得少点什么,最后我用jeb反编译之后才发现,Android逆向助手反编译的结果少了一个至关重要的有一个函数调用的函数。

easyOCR如何再java中使用_bc

言归正传,打开源代码首先看 函数

然后观察参数为 类型的 方法

讯享网

好,我们继续看 方法,这个方法就有点东西了,不过没事,我来一行一行的注释,保证你们都能看懂

 

上面的代码中有两处实例化,现在来解释一下里面的算法,首先看 的构造方法,因为 先被调用:

讯享网

上面类 的实例化代码就是将c的前两位移到最后,运行之后,其中变量的值为

 

然后看类 的实例化做了什么:

 

上面的代码就不注释了,它和类 的功能类似,这里是将c的前3位移到最后,运行之后就是:

 

构造方法都看完了,我们接着上面的往下分析 方法,在实例化之后,我们可以看到如下这个循环,我们来看一下这个循环做了什么:

 

它将v3中的每一个字符循环传给 ,好,我们接下来就来看看这个 方法(三个参数)是何方神圣:

 

我们可以很明显的看到这是一个嵌套的函数调用,代码有些混淆,我也懒得去弄了,直接分析吧,我头硬。

它先调用了 我们可以看到,它将第一个参数作为参数传给第二个参数的 方法,好吧有点绕,仔细读一下,应该能读懂。

那我们就来看一下这个函数究竟干了什么,它是类 的 函数(有一个参数为String),下面就是代码,我给出详细的注释,方便大家理解。

 

上面这个方法返回的是一个整数值,它的返回值传递给 ,这个 方法其实就是类 中的 方法,我在代码中给出详细注释:

 

从上面的分析我们对于整个程序的执行流程应该是很清楚了,那么我们就从程序中判断字符串 反向推导,我用python写了一个反向推导的脚本:

 

最后可以得出来:

安卓逆向java基础easyOCR如何再java中使用_easyOCR如何再java中使用_02

将得到的字符串两端加上flag{},然后就是正确答案了。

代码比较长,写的步骤很细,从 一直回推到 ,变量名也尽量和原Java代码保持一致,如果想看明白,对着源代码仔细看,理解后,应该很容易看懂。

小讯
上一篇 2025-01-01 17:14
下一篇 2024-12-28 19:39

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/4153.html