Fetching...

-

Just a minute...

1.下载jadx-gui

在terminal中执行下面语句

1
2
3
4
mkdir jadx #创建 jadx目录
git clone https://github.com/skylot/jadx.git #将存储库克隆到目录
cd jadx # 进入 jadx目录
./gradlew dist # 执行编译

2.反编译

下载题目所给的apk.apk,利用jadx-gui进行反编译,得到如下结果

3.分析代码

可知如果 inputString.charAt(i) 如果不等于 (versionCode.charAt(i) ^ versionName) 就会输出”再接再厉,加油~”,因此判断正确的input应使二者相等

input的长度应和versionCode的长度相等,为15

1
2
3
4
5
6
7
8
9
10
public static final int VERSION_CODE = 15;
public static final String VERSION_NAME = "X<cP[?PHNB<P?aj";

while (i < inputString.length() && i < versionCode.length()) {
if (inputString.charAt(i) != (versionCode.charAt(i) ^ versionName)) {
Toast.makeText(MainActivity.this, "再接再厉,加油~", 1).show();
return;
}
i++;
}

4.运行代码

根据分析运行以下代码,即可得到答案。

1
2
3
4
5
6
7
8
9
10
11
public class HelloWorld {

public static void main(String[] args) {
int versionName = 15;
String versionCode = "X<cP[?PHNB<P?aj";
for(int i=0;i<versionCode.length();i++) {
System.out.print((char) (versionCode.charAt(i)^versionName));

}
}
}

Related post
Comment
Share
  • Leetcode1:两数相加

    题目给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。 代码12345678910cl...

    Leetcode1:两数相加
  • RSA总结

    rsa的基本原理公钥(n,e) 私钥(n,d) 其中,n是两个质数p,q的积,e是随机整数满足1<e<m且e与m互质,d满足(e*d)%m = 1. 代码已知p,q,n,e 123456789101112131415161...

    RSA总结
  • 基于hexo+github搭建博客

    一、准备工作1.node用来生成静态页面,去官网下载一个就好了 2.git把本地的hexo内容提交到github上去 一是安装homebrew,然后通过homebrew安装Git,具体方法请参考homebrew的文档:http://b...

    基于hexo+github搭建博客
Please check the parameter of comment in config.yml of hexo-theme-Annie!