制作网站监控推荐,莆田网站建设开发,企业规划设计,网站开发iso9001easyEZbaby_app
究极简单的安卓逆向 解法
得到一个 apk 安装包。 用 jadx 打开#xff0c;搜索文本 flag#xff0c;加载所有。 flag 是 obj obj2#xff0c;来自用户的用户名和密码。 Override // android.view.View.OnClickListenerpublic void onClick(View view) {St…easyEZbaby_app
究极简单的安卓逆向 解法
得到一个 apk 安装包。 用 jadx 打开搜索文本 flag加载所有。 flag 是 obj obj2来自用户的用户名和密码。 Override // android.view.View.OnClickListenerpublic void onClick(View view) {String obj this.username.getText().toString();String obj2 this.password.getText().toString();if (checkUsername(obj) checkPass(obj2)) {Toast.makeText(this, 登录成功, 0).show();Toast.makeText(this, flag{ obj obj2 }, 0).show();return;}Toast.makeText(this, 登录失败, 0).show();}先分析 checkUsername 方法。str 和 sb 相等时返回 true。 public boolean checkUsername(String str) {if (str ! null) {try {if (str.length() ! 0 str ! null) {MessageDigest messageDigest MessageDigest.getInstance(MD5);messageDigest.reset();messageDigest.update(zhishixuebao.getBytes());String hexString toHexString(messageDigest.digest(), );StringBuilder sb new StringBuilder();for (int i 0; i hexString.length(); i 2) {sb.append(hexString.charAt(i));}return (sb.toString()).equals(str);}return false;} catch (NoSuchAlgorithmException e) {e.printStackTrace();}}return false;}将 CheckUsername 方法改为输出 sb。
import java.io.*;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;public class CheckUsername {public static void main(String[] args) {try {MessageDigest messageDigest MessageDigest.getInstance(MD5);messageDigest.reset();messageDigest.update(zhishixuebao.getBytes());String hexString toHexString(messageDigest.digest(), );StringBuilder sb new StringBuilder();for (int i 0; i hexString.length(); i 2) {sb.append(hexString.charAt(i));}System.out.print(sb);} catch (NoSuchAlgorithmException e) {e.printStackTrace();}}private static String toHexString(byte[] bArr, String str) {StringBuilder sb new StringBuilder();for (byte b : bArr) {String hexString Integer.toHexString(b 255);if (hexString.length() 1) {sb.append(0);}sb.append(hexString);sb.append(str);}return sb.toString();}}输出
7afc4fcefc616ebd然后分析 checkPass 方法。str 不为空长度15 public boolean checkPass(String str) {if (str null) {return false;}char[] charArray str.toCharArray();if (charArray.length ! 15) {return false;}for (int i 0; i charArray.length; i) {charArray[i] (char) ((((255 - i) 2) - 98) - charArray[i]);if (charArray[i] ! 0 || i 15) {return false;}}return true;}经过这句处理后charArray[i] 变为 ‘0’。
charArray[i] (char) ((((255 - i) 2) - 98) - charArray[i]);将 CheckPass 方法改为输出 str。
import java.io.*;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;public class CheckPass {public static void main(String[] args) {char[] charArray new char[15];for (int i 0; i charArray.length; i) {charArray[i] (char) ((((255 - i) 2) - 98) - 0);}System.out.print(charArray);}
}输出
onmlkjihgfedcba拼接 obj obj2 得到 flag。
Toast.makeText(this, flag{ obj obj2 }, 0).show();Flag
flag{7afc4fcefc616ebdonmlkjihgfedcba}声明
本博客上发布的所有关于网络攻防技术的文章仅用于教育和研究目的。所有涉及到的实验操作都在虚拟机或者专门设计的靶机上进行并且严格遵守了相关法律法规。
博主坚决反对任何形式的非法黑客行为包括但不限于未经授权的访问、攻击或破坏他人的计算机系统。博主强烈建议每位读者在学习网络攻防技术时必须遵守法律法规不得用于任何非法目的。对于因使用这些技术而导致的任何后果博主不承担任何责任。