1.简介

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

2.题目分析

直接使用JEB对UC-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

UC-Android逆向工程师 面试题1的分析的更多相关文章

  1. UC-Android逆向工程师面试第2题分析

    博客链接:http://blog.csdn.net/qq1084283172/article/details/52133172 一.简介 这个题目是别人面试UC优视集团Android逆向工程师一职位的 ...

  2. Android逆向工程师的黑科技

    你们发现了吗?Android逆向.安全方面的工程师真的越来越"稀有"了. 以腾讯.美团.百度为代表的大厂们,在某招聘网站上居然薪酬高达30-60k. 现在移动端市场越来越火热,AP ...

  3. Android中高级工程师面试题

    https://www.cnblogs.com/huangjialin/p/8657565.html(存在不少答案错误,可参照知识点复习,答案不可全信)  上 https://www.cnblogs. ...

  4. Mc小冰总结的Android开发工程师面试题以及答案,android程序员必备,详解

    1.请谈一下Android系统的架构. 答:Android系统采用了分层架构,从高层到低层分别是应用程序层.应用程序框架层.系统运行库层和linux核心层. 2.谈谈android大众常用的五种布局. ...

  5. 整理最全的Android开发工程师面试题,面试题详解。java、Android程序员

    1.    请描述下Activity的生命周期. 必调用的三个方法:onCreate()--> onStart() --> onResume(),用AAA表示 (1)父Activity启动 ...

  6. Android开发工程师面试题总结。android开发面试经验

    1:Android中五种数据存储方式分别是什么?他们的特点?     (1)SharedPreference,存放较少的五种类型的数据,只能在同一个包内使用,生成XML的格式存放在设备中 (2) SQ ...

  7. Android开发工程师面试题之handler详解。android程序员,android开发面试资料,详解

    Message:消息:其中包含了消息ID,消息对象以及处理的数据等,由MessageQueue统一列队,终由Handler处理 Handler:处理者:负责Message发送消息及处理.Handler ...

  8. 刷了无数大厂Android研发岗面试题,其实考的无非是这 3 点能力

    前言 发现一个有趣的现象,似乎程序员们对面试题总是抱有热情,多看几道面试题,自己的面试能力就可以提高一点. 作为一个研发工程师,看过很多公司的面试题,也参与过很多公司的面试,发现大厂的面试题更加具有代 ...

  9. [转]Android逆向之动态调试总结

    一.在SO中关键函数上下断点 刚学逆向调试时.大多都满足于在SO中某关键函数上下断点.然后通过操作应用程序,去触发这个断点,然后进行调试 详细的步骤可以参见非虫大大的<Android软件安全与逆 ...

随机推荐

  1. 鸿蒙的js开发部模式18:鸿蒙的文件上传到python服务器端

    1.首先鸿蒙的js文件上传,设置目录路径为: 构建路径在工程主目录下: 该目录的说明见下面描述: 视图构建如下: 界面代码: <div class="container"&g ...

  2. 002-LED闪烁

    LED闪烁 功能:控制LED模块的小灯闪烁 #include<reg52.h> // 头文件 sbit LED = P2^0; // LED接低电平 void main() //主函数 { ...

  3. 【白话科普】CDN & 游戏加速器,两者是一个原理吗?

    说起加速,大家可能就会联想到"游戏加速"之类的场景,而说到现在流行的云服务加速,则离不开 CDN 这个词.那么 CDN 和游戏加速器是同一种东西么?从效果上看两者都是为了" ...

  4. [源码分析] 消息队列 Kombu 之 启动过程

    [源码分析] 消息队列 Kombu 之 启动过程 0x00 摘要 本系列我们介绍消息队列 Kombu.Kombu 的定位是一个兼容 AMQP 协议的消息队列抽象.通过本文,大家可以了解 Kombu 是 ...

  5. Java8的新特性--函数式接口

    目录 函数式接口 什么是函数式接口 函数式接口的使用 Java8内置的四大核心函数式接口 一.Consumer:消费型接口(void accept(T t)) 二.Supplier:供给型接口(T g ...

  6. 2019 GDUT Rating Contest I : Problem A. The Bucket List

    题面: A. The Bucket List Input file: standard input Output file: standard output Time limit: 1 second Me ...

  7. ResNet的个人总结

    ResNet可以说是我认真读过的第一篇paper,据师兄说读起来比较简单,没有复杂的数学公式,不过作为经典的网络结构还是有很多细节值得深究的.因为平时不太读英文文献,所以其实读的时候也有很多地方不是很 ...

  8. 攻防世界 reverse tt3441810

    tt3441810 tinyctf-2014 附件给了一堆数据,将十六进制数据部分提取出来, flag应该隐藏在里面,(这算啥子re,) 保留可显示字符,然后去除填充字符(找规律 0.0) 处理脚本: ...

  9. 【Makefile】2-Makefile的介绍及原理

    目录 前言 概念 Chapter 2:介绍 2.1 makefile的规则 2.3 make 是如何工作的 ** 2.5 让 make 自动推导 2.8 Makefile 里面有什么 2.9 Make ...

  10. INTERSPEECH2020 语音情感分析论文之我见

    摘要:本文为大家带来InterSpeech2020 语音情感分析25篇论文中的其中8篇的总结. 本文分享自华为云社区<INTERSPEECH2020 语音情感分析论文总结一>,原文作者:T ...