UC-Android逆向工程师 面试题1的分析

news/2025/2/25 22:53:24

1.简介

这个题目是一位吾爱破解的坛友在面试UCAndroid逆向工程事时,遇到的题目。此题不难,与阿里移动去年移动安全比赛的题目差不多,题目的验证方式也是查表对比,并且这个表的数据是放在文件中的。


2.题目分析



直接使用JEBUC-crackme.apk程序进行反编译,得到下面的结果:




获取查询的密码表,即文件abcdefghddddd的文件偏移0x15D81开始到0x16081结束的0x300字节的数据。








获取中间参与最终字符串比较的18字节的数据即文件abcdefghddddd的文件偏移0x16481开始的后面18个字节的数据。






通过用户输入的注册码,查询密码表获取参与比较的密码字符串。




经过前面的分析,写了个注册机,代码如下:


import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

/**
 * 
 */

/**
 * @author Fly2014
 * 
 */
public class Key
{
	/**
	 * @param args
	 * @throws IOException
	 */
	public static void main(String[] args) throws IOException
	{
		// 创建文件类
		File file = new File("abcdefghddddd");

		// 构造文件输入流
		FileInputStream fileInputStream = new FileInputStream(file);

		// 获取文件的大小
		int nFileSize = fileInputStream.available();

		// 申请内存空间
		byte[] byteArryFile = new byte[nFileSize];

		byte[] byteArryTable = new byte[768];

		byte[] byteArryResult = new byte[18];

		// 读取文件的数据到内存中
		fileInputStream.read(byteArryFile, 0, nFileSize);

		// 获取密码查询表0x300字节
		System.arraycopy(byteArryFile, 0x15D81, byteArryTable, 0, 768);

		// 获取最终参与比较的18字节的密码
		System.arraycopy(byteArryFile, 0x16481, byteArryResult, 0, 18);

		// 密码查询表转utf-8格式
		String strTable = new String(byteArryTable, "utf-8");

		// 18字节密码装utf-8格式
		String strResult = new String(byteArryResult, "utf-8");

		// 存放用户输入的注册码
		StringBuilder strBuilderKey = new StringBuilder();

		// 包里查询破解
		for (int i = 0; i < 6; i++)
		{
			for (int j = 0; j < 255; j++)
			{
				if (strTable.charAt(j) == strResult.charAt(i))
				{
					// 获取用户输入的字符
					strBuilderKey.append((char) j);

					break;
				}
			}
		}

		// 输出key
		System.out.println("输入的注册码:" + strBuilderKey.toString() + "\n");

		// 参与比较的最终密码
		System.out.println("比较的中间密码:" + strResult.toString() + "\n");

		System.out.println("显示查询密码表:");

		for (int a = 0; a < 255; a++)
		{
			System.out.print(strTable.charAt(a));

			if ((a + 1) % 51 == 0 && a != 0)
			{
				System.out.print("\n");
			}
		}

	}
}


经过分析发现,最终的输入字符串是581026






分析文档的下载地址:http://download.csdn.net/detail/qq1084283172/9029777




http://www.niftyadmin.cn/n/545233.html

相关文章

高级UI晋升之自定义View实战(六)

更多Android高级架构进阶视频学习请点击&#xff1a;https://space.bilibili.com/474380680 本篇文章将从Android 自定义属性动画&Camera动画来介绍自定义View: 1.相关知识点 对于Androi的帧动画&#xff0c;可以制作gif图片&#xff0c;有时为了能够动态的生成帧动画&am…

大数据发展迅猛 基金三主线掘金

文章讲的是大数据发展迅猛 基金三主线掘金&#xff0c;9月5日&#xff0c;国务院印发《促进大数据发展行动纲要》&#xff0c;大数据行业顶层设计正式出炉。《纲要》部署近5年至10年大数据发展的三大主要任务&#xff0c;分别是政府数据资源开放、推动产业创新培育新兴业态及健…

Android的so库注入

作者&#xff1a;Fly2015 Android平台的so库的注入是有Linux平台的进程注入移植来的。由于Android系统的底层实现是基于Linux系统的源码修改而来&#xff0c;因此很多Linux下的应用可以移植到Android平台上来比如漏洞。由于Linux平台的注入需要权限&#xff0c;相比较于Window…

高级UI晋升之自定义view实战(七)

更多Android高级架构进阶视频学习请点击&#xff1a;https://space.bilibili.com/474380680 本篇文章自定义ViewGroup实现瀑布流效果来进行详解dispatchTouchEvent ----- onInterceptTouchEvent----- onTouchEvent 最外层的ViewGroup首先接收到触摸事件&#xff0c;然后遍历他…

赛门铁克完成收购Blue Coat 重塑未来网络安全

今日&#xff0c;全球网络安全领导厂商赛门铁克公司&#xff08;纳斯达克&#xff1a;SYMC&#xff09;宣布成功完成对Blue Coat公司的收购。Blue Coat是一家领先的网站安全服务提供商&#xff0c;在全球拥有众多企业和政府用户。这次收购将帮助赛门铁克进一步完善创新产品组合…

paip.输入法编程---输入法ATIaN历史记录 c823

paip.输入法编程---输入法ATIaN历史记录 c823 作者Attilax &#xff0c; EMAIL:1466519819qq.com 来源&#xff1a;attilax的专栏 地址&#xff1a;http://blog.csdn.net/attilax 7.24 ------------ 3500 单字,3000词组(全拼形式单声母形式) ------2013.7.27 wen缩写on,yen缩…

Android版俄罗斯方块的实现

学习Android的基本开发也有一段时间了&#xff0c;但是因为没有经常使用Android渐渐的也就忘记了。Android编程学的不深&#xff0c;仅仅是为了对付逆向&#xff0c;但是有时还是会感到力不从心的。毕竟不是一个计算机专业毕业的Coder&#xff0c;相对来说编程的基础对于以后很…

中国人工智能学会通讯——神经环路研究最新进展及对类脑计算的启示 2. 对数高斯分布的大脑连接强度...

2. 对数高斯分布的大脑连接强度 什么叫对数高斯分布&#xff1f;如果把这个分布取个对数就是高斯分布。它的尾巴没有刚才说的幂律分布长&#xff0c;但这种现象也很常见&#xff0c;为什么&#xff1f;有个很简单的原因&#xff0c;大家知道根据大数原则&#xff0c;如果把很多…