文章目录

  • 前言
  • 一、人民的名义-抓捕赵德汉1-200
    • 1.题目
    • 2.答题

前言

下面介绍两个反编译工具

  • jadx是一个用于反编译Android APK文件的开源工具,静态反编译,查找索引功能强大
  • jeb和IDA很像,属于动态调试,可以看java汇编也可以生成伪代码,还可以动态attach到目标调试

对于so文件的逆向工具选择

  • IDA逆向工具是一款反汇编器,被广泛应用于软件逆向工程领域,能够反汇编各种不同平台的二进制程序代码,并还原成可读的汇编代码。

一、人民的名义-抓捕赵德汉1-200

1.题目

2.答题

简单看一下三个类文件,可以发现,checkPassword类基础自ClassLoader,并实现了main方法。也就是这个jar文件的入口函数。

package defpackage;import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.spec.SecretKeySpec;/* renamed from: CheckPassword  reason: default package */
/* loaded from: 169e139f152e45d5ae634223fe53e6be.jar:CheckPassword.class */
public class CheckPassword extends ClassLoader {static String hexKey = "bb27630cf264f8567d185008c10c3f96";public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, IOException, NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException {CheckInterface checkerObject = loadCheckerObject();BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));while (true) {System.out.println("Enter password:");if (checkerObject.checkPassword(stdin.readLine())) {System.out.println("Well done, that is the correct password");System.exit(0);} else {System.out.println("Incorrect password");}}}private static CheckInterface loadCheckerObject() throws IOException, NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException, ClassFormatError, InstantiationException, IllegalAccessException {CheckPassword mycl = new CheckPassword();InputStream in = CheckPassword.class.getClass().getResourceAsStream("/ClassEnc");ByteArrayOutputStream bout = new ByteArrayOutputStream();byte[] bytes = new byte[512];while (true) {int len = in.read(bytes);if (len <= -1) {byte[] myClassBytesEnc = bout.toByteArray();in.close();SecretKeySpec secretKeySpec = new SecretKeySpec(hexStringToByteArray(hexKey), "AES");Cipher decAEScipher = Cipher.getInstance("AES");decAEScipher.init(2, secretKeySpec);byte[] myClassBytes = decAEScipher.doFinal(myClassBytesEnc);return (CheckInterface) mycl.defineClass(null, myClassBytes, 0, myClassBytes.length).newInstance();}bout.write(bytes, 0, len);}}private static byte[] hexStringToByteArray(String s) {int len = s.length();byte[] data = new byte[len / 2];for (int i = 0; i < len; i += 2) {data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4) + Character.digit(s.charAt(i + 1), 16));}return data;}
}

CheckPassword包含用户密码输入的判断

package defpackage;import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;/* renamed from: CheckPass  reason: default package */
/* loaded from: 169e139f152e45d5ae634223fe53e6be.jar:newClassName.class */
public class CheckPass implements CheckInterface {@Override // defpackage.CheckInterfacepublic boolean checkPassword(String input) {MessageDigest md5Obj = null;try {md5Obj = MessageDigest.getInstance("MD5");} catch (NoSuchAlgorithmException e) {System.out.println("Hash Algorithm not supported");System.exit(-1);}byte[] bArr = new byte[40];md5Obj.update(input.getBytes(), 0, input.length());return byteArrayToHexString(md5Obj.digest()).equals("fa3733c647dca53a66cf8df953c2d539");}private static String byteArrayToHexString(byte[] data) {StringBuffer buf = new StringBuffer();for (int i = 0; i < data.length; i++) {int halfbyte = (data[i] >>> 4) & 15;int two_halfs = 0;do {if (halfbyte < 0 || halfbyte > 9) {buf.append((char) (97 + (halfbyte - 10)));} else {buf.append((char) (48 + halfbyte));}halfbyte = data[i] & 15;two_halfs++;} while (two_halfs < 1);}return buf.toString();}
}

可以看到用户输入就是:fa3733c647dca53a66cf8df953c2d539的md5解密


得到flag:flag{monkey99}

【愚公系列】2023年04月 攻防世界-MOBILE(人民的名义-抓捕赵德汉1-200)相关推荐

  1. 【愚公系列】2023年04月 攻防世界-MOBILE(Android2.0)

    文章目录 前言 一.Android2.0 1.题目 2.答题 前言 下面介绍两个反编译工具 jadx是一个用于反编译Android APK文件的开源工具,静态反编译,查找索引功能强大 jeb和IDA很 ...

  2. 【愚公系列】2023年04月 攻防世界-MOBILE(gogogo)

    文章目录 前言 一.gogogo 1.题目 2.答题 前言 下面介绍两个反编译工具 jadx是一个用于反编译Android APK文件的开源工具,静态反编译,查找索引功能强大 jeb和IDA很像,属于 ...

  3. 【愚公系列】2023年04月 攻防世界-MOBILE(easy-apk)

    文章目录 前言 一.easy-apk 1.题目 2.答题 2.1 jadx反编译apk文件 2.2 base64 总结 前言 下面介绍两个反编译工具 jadx是一个用于反编译Android APK文件 ...

  4. 【愚公系列】2023年04月 攻防世界-MOBILE(APK逆向-2)

    文章目录 前言 1.反编译 2.安卓hook 3.AndroidManifest文件格式 一.APK逆向-2 1.题目 2.答题 前言 1.反编译 下面介绍两个反编译工具 jadx是一个用于反编译An ...

  5. 【愚公系列】2023年04月 攻防世界-MOBILE(APK逆向)

    文章目录 前言 一.APK逆向 1.题目 2.答题 备注:JEB的常用快捷键: 前言 下面介绍两个反编译工具 jadx是一个用于反编译Android APK文件的开源工具,静态反编译,查找索引功能强大 ...

  6. 【愚公系列】2023年05月 攻防世界-MOBILE(Phishing is not a crime-2)

    文章目录 前言 一.Phishing is not a crime-2 1.题目 2.答题 前言 下面介绍三个反编译工具 jadx是一个用于反编译Android APK文件的开源工具,静态反编译,查找 ...

  7. 【愚公系列】2023年05月 攻防世界-MOBILE(丛林的秘密)

    文章目录 前言 一.丛林的秘密 1.题目 2.答题 前言 下面介绍三个反编译工具 jadx是一个用于反编译Android APK文件的开源工具,静态反编译,查找索引功能强大 jeb和IDA很像,属于动 ...

  8. 【愚公系列】2023年05月 攻防世界-Web(lottery)

    文章目录 前言 一.lottery 1.题目 2.答题 前言 dirsearch是一个用于Web服务器的爬虫工具,它可以快速地扫描网站的目录,并找出隐藏的文件和目录.dirsearch可以检测出许多常 ...

  9. 【愚公系列】2023年05月 攻防世界-Web(unseping)

    文章目录 前言 一.unseping 1.题目 2.答题 前言 反序列化漏洞是一种安全漏洞,存在于那些使用序列化技术的应用程序中.反序列化是将已序列化数据还原回对象的过程.攻击者可以通过构造恶意序列化 ...

最新文章

  1. Java数组传参sql_Java中如何传一个数组作为筛选条件操作数据库(sql中foreach的使用)...
  2. python add configuration_idea 中add configuration
  3. 优化VS 2005编译,脱离漫长的等待!
  4. golang中的死锁
  5. windebug常用命令
  6. xlwings删除数据_xlwings如何删除行和列?
  7. linux服务器开发板,linuxnfs服务器的建立,虚拟机、开发板间的通信
  8. 动物面部识别技术哪个强?奶牛鸡猪狗绵羊……
  9. C语言实验六作业,C语言程序设计作业——实验六.doc
  10. poj 1679(次小生成树)
  11. 2004-2020年数学建模美赛O奖论文合集(免费)
  12. Xmanager4注册码
  13. ios wifi 定位_Wifi 定位原理及 iOS Wifi 列表获取(示例代码)
  14. 石家庄地铁站项目最终总结报告
  15. 魂迁光刻,梦绕芯片,中芯国际终获ASML大型光刻机
  16. 在OPPO应用市场内如何做ASO优化
  17. day2和day3随堂笔记
  18. satisfy_dependencies_for: Cannot satisfy the following dependencies
  19. 【Mo 人工智能技术博客】python玩转信号处理与机器学习入门
  20. gcc 优化选项 -O1 -O2 -O3 -Os 优先级,-fomit-frame-pointer(不积跬步无以至千里)

热门文章

  1. [dolphin模拟器]“Error loading Plugins、Plugin_padsimple.dll:can't read Info.”等问题的解决方案...
  2. android 最新头条适配,android 平板适配,今日头条适配(同时适配手机和平板)
  3. 【arduino】【u8g2库】OLED屏-U8glib库 增强版 U8G2库
  4. go-pitaya学习笔记(2)-chatDemo分析
  5. java.lang.NumberFormatException: null 和 java.lang.ArithmeticException: Non-terminating decimal expan
  6. matlab 脸部血容积脉搏波,脉搏血氧仪中光电容积脉搏波的软件检出方法
  7. 名帖253 文徵明 行书《春游、​纪恩诗卷》
  8. 《数据安全能力成熟度模型》实践指南05:数据传输加密
  9. python字符串替换正则_【python】 字符串替换+正则
  10. 一、从项目零基础入门微信小程序之项目搭建欢迎页面实现