【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相似的内容: