【Android 逆向】【攻防世界】app1

android,逆向,攻防,世界,app1 · 浏览次数 : 18

小编点评

**Apk 安装和 jadx 打开步骤** 1. 确保您已经安装了 Android SDK。 2. 创建一个新的 Java 文件,命名为 `MainActivity.java`。 3. 在 `MainActivity.java` 中添加以下代码: ```java 1. import android.Manifest; 2. import android.content.Intent; 3. import android.os.Bundle; 4. import com.example.yaphetshan.tencentgreat.R; 5. 6. public class MainActivity extends Activity { 7. private String text; 8. 9. @Override 10. protected void onCreate(Bundle savedInstanceState) { 11. super.onCreate(savedInstanceState); 12. setContentView(R.layout.activity_main); 13. text = findViewById(R.id.text).getText().toString(); 14. 15. // 获取应用程序的版本号和名称 16. PackageInfo pinfo = getPackageManager().getPackageInfo(BuildConfig.APPLICATION_ID, 16384); 17. String versionCode = pinfo.versionName; 18. int versionName = pinfo.versionCode; 19. 20. // 检查版本是否匹配 21. for (int i = 0; i < inputString.length() && i < versionCode.length(); i++) { 22. if (inputString.charAt(i) != (versionCode.charAt(i) ^ versionName)) { 23. Toast.makeText(this, "再接再厉,加油~\", 1).show(); 24. return; 25. } 26. } 27. 28. // 检查版本是否匹配成功 29. if (inputString.length() == versionCode.length()) { 30. Toast.makeText(this, "恭喜开启闯关之门!", 1).show(); 31. } 32. } 33. } ``` **代码解释** * `onCreate()` 方法中,我们获取了字符串 `text`,这是 APK 中要安装的应用程序的名称。 * `getPackageManager()` 方法获取应用程序的 package manager,并调用 `getPackageInfo()` 方法获取应用程序的版本号和名称。 * `for` 循环遍历 `versionCode` 的每一位字符,并检查它是否与 `inputString` 中的字符相同。 * 如果匹配,则提示用户继续努力,否则提示用户已成功开启了闯关。 * 如果版本匹配成功,则提示用户恭喜开启了闯关。 **注意** * `R.layout.activity_main` 是一个资源文件,可能存在于 `res/layout/activity_main.xml` 中。 * `inputString` 是 APK 中要安装的应用程序的名称。 * `versionCode` 和 `versionName` 是应用程序版本号和名称的字符串。

正文

1. apk安装到手机, 老套路了

2. jadx打开

        this.btn.setOnClickListener(new View.OnClickListener() { // from class: com.example.yaphetshan.tencentgreat.MainActivity.1
            @Override // android.view.View.OnClickListener
            public void onClick(View v) {
                try {
                    String inputString = MainActivity.this.text.getText().toString();
                    PackageInfo pinfo = MainActivity.this.getPackageManager().getPackageInfo(BuildConfig.APPLICATION_ID, 16384);
                    String versionCode = pinfo.versionName;
                    int versionName = pinfo.versionCode;
                    for (int i = 0; i < inputString.length() && i < versionCode.length(); i++) {
                        if (inputString.charAt(i) != (versionCode.charAt(i) ^ versionName)) {
                            Toast.makeText(MainActivity.this, "再接再厉,加油~", 1).show();
                            return;
                        }
                    }
                    if (inputString.length() == versionCode.length()) {
                        Toast.makeText(MainActivity.this, "恭喜开启闯关之门!", 1).show();
                        return;
                    }
                } catch (PackageManager.NameNotFoundException e) {
                }
                Toast.makeText(MainActivity.this, "年轻人不要耍小聪明噢", 1).show();
            }
        });
    }

这里要获取versionName 和versionCode,直接取AndroidManifest.xml里面找

android:versionCode="15" android:versionName="X&lt;cP[?PHNB&lt;P?aj"

这里要稍微转化一下,写出以下代码

version_code = 15
version_name = "X<cP[?PHNB<P?aj"
result = ""
for c in version_name:
	t_cc = ord(c)
	tt = t_cc^version_code
	print(tt)
	result += chr(tt)
	
print(result)

# 日志
W3l_T0_GAM3_0ne

成功得到flag

与【Android 逆向】【攻防世界】app1相似的内容:

【Android 逆向】【攻防世界】app1

1. apk安装到手机, 老套路了 2. jadx打开 this.btn.setOnClickListener(new View.OnClickListener() { // from class: com.example.yaphetshan.tencentgreat.MainActivity.1

【Android 逆向】【攻防世界】基础android

1. 下载并安装apk,提示要输入密码 2. apk拖入到jadx中看一下 this.login.setOnClickListener(new View.OnClickListener() { // from class: com.example.test.ctf02.MainActivity.1

【Android 逆向】【攻防世界】android2.0

这是一道纯算法还原题 1. apk安装到手机,提示输入flag,看来输入就是flag 2. jadx 打开apk查看 this.button.setOnClickListener(new View.OnClickListener() { // from class: com.example.test

【Android 逆向】【攻防世界】APK逆向

1. apk安装到手机,提示输入flag 2. jadx打开apk 定位到checkSN方法 public boolean checkSN(String userName, String sn) { if (userName != null) { try { if (userName.length(

【Android 逆向】【攻防世界】人民的名义-抓捕赵德汉1-200

1. 这一题下载下来是个jar文件,感觉很android关系不大,但还是放在了mobile这个分类下了 2. 直接java jar运行,提示需要输入密码 # java -jar 169e139f152e45d5ae634223fe53e6be.jar Enter password: 1234 Inc

【Android 逆向】【攻防世界】ill-intentions

1. apk 安装到手机, 啥输入框都没有 2. apk拖入到jadx中看看 public class MainActivity extends Activity { @Override // android.app.Activity public void onCreate(Bundle save

【Android 逆向】【攻防世界】boomshakalaka-3

1. apk 安装到手机,是一个cocos2dx 写的打飞机的游戏 题目描述跟得分有关(题目描述: play the game, get the highest score) 2. jadx 打开apk public class FirstTest extends Cocos2dxActivity

【Android 逆向】【攻防世界】easy-apk

apk 安装到手机,随便输入点内容,提示错误 2. apk 拖入到jadx中看看 public class MainActivity extends AppCompatActivity { /* JADX INFO: Access modifiers changed from: protected

【Android 逆向】【攻防世界】app2

1. 手机安装apk,随便点击,进入到第二个页面就停了 2. jadx打开apk,发现一共有三个activity,其中第三个activity: FileDataActivity 里面有东西 public class FileDataActivity extends a { private TextV

【Android 逆向】【攻防世界】easy-so

1. apk安装到手机,随便输入点内容,提示错误 2. jadx打开apk btn.setOnClickListener(new View.OnClickListener() { // from class: com.testjava.jack.pingan2.MainActivity.1 @Ove