apk逆向实例 TopCtf
TopCtf
题目链接: https://pan.baidu.com/s/1jINx7Fo (在里面找相应的名字就行)
背景故事:
我是小白一枚,自学一些基础知识。。。
从朋友那得到的题,朋友说巨简单,然后各种不会。。。
不容易呀,千辛万苦终于做出来一道了。。。眼泪已经控制不住了。。。
解题思路:
用killer打开,反编译,很顺利反编译成功了,找到入口类,点击进入

查看java源码,找到了关键代码段,flag就是在此生成的

这段代码将paramString1的值MD5加密,每隔2个字符取一个字符,最后拼起来就是flag。
代码明白了以后,我们会发现还有两个未知的东西。
1、 toHexString()函数的作用。
2、 变量paramString的值。
接下来,继续往后看。
找到了toHexString()代码块,小白的我死活想不明白这句(String str = Integer.toHexString(paramArrayOfByte[i] & 0xFF);)是什么意思。。

直到看到了这篇文章 http://blog.csdn.net/huihui870311/article/details/49477739
了解到这是一段将字符串转换成16进制的代码,紧接着在下面又找到了edit_userName的值。可以知道edit_userName的值将会传给paramString

所有疑问迎刃而解,接下来开始写解密程序。
import hashlib par1 = b"Tenshine" def checkSN(par1):
if par1:
# if par2 and len(par2) == 22:
m2 = hashlib.md5()
m2.update(par1)
par1_md5 = m2.hexdigest()
print(par1_md5)
par1 = toHexString(par1_md5)
print(par1)
what = ""
i = 0
while i < len(par1_md5):
what += par1_md5[i]
i += 2
print("flag{"+ what +"}") def toHexString(s):
lst = ""
for ch in s:
hv = hex(ord(ch)).replace('0x', '')
if len(hv) == 1:
hv = ''+hv
lst += hv
return lst checkSN(par1)
运行结果:

apk逆向实例 TopCtf的更多相关文章
- android apk 逆向中常用工具一览
关于apk 逆向中的一些工具的使用,看了不少文章,也使用过有很长一段时间了,今天对此做一总结: 几种文件之间的转换命令: 1. odex -> smali java -jar baksmali ...
- Android apk逆向:反编译,回编译,签名,打包。
Android apk逆向:反编译,回编译,签名,打包流程. 第一步: apk 反编译. 1) 打开命令行窗口,输入java -version, 检测当前java版本,若版本较低, 则下载JAVA S ...
- Android apk逆向实战
简介 逆向Android apk其实是一个分析Android apk的一个过程,必须了解Android程序开发的流程.结构.语句分支.解密原理等等. 功能 破解一个注册验证程序(自写一个简单的注册验证 ...
- apk逆向 - smali动态调试
author: Dlive date: 2016/10/6 0x00 前言 之前有人问过smali的动态调试方法,其实网上已经有很多文章讲这些内容,但是为了方便大家学习,我还是写一下让大家少走点坑 ...
- APK自我保护方法
标 题: [原创]APK自我保护方法 作 者: MindMac 时 间: 2013-12-28,21:41:15 链 接: http://bbs.pediy.com/showthread.php?t= ...
- Atitit.反编译apk android源码以及防止反编译apk
Atitit.反编译apk android源码以及防止反编译apk 1.1. Tool apk逆向助手1 1.2. 二.使用dex2jar + jd-gui 得到apk的java源码1 1.3. 用 ...
- Android官方技术文档翻译——Apk 拆分机制
本文译自androd官方技术文档<Apk Splits>,原文地址:http://tools.android.com/tech-docs/new-build-system/user-gui ...
- Mac上反编译Android apk安装包
什么是反编译 我们知道,Android的程序打包后会生成一个APK文件,这个文件可以直接安装到任何Android手机上,因此,反编译就是对这个APK进行反编译.Android的反编译分成两个部分: 一 ...
- 零开始Android逆向教程(一)——初探Android逆向
这段时间因为某些业务驱动,开始研究一些逆向相关的东西,浏览了下其所包含的大致内容,发现真是一个新大陆,跟之前耳听目染过的一些门面介绍完全不是一个层级的,真正的印证了下手难这一说法. 谨此以本文开始 ...
随机推荐
- get请求中params参数的使用
一.当发送一个get请求的时候,如果有参数,那么参数应该怎么处理呢? 比如,百度阅读里面,查询书的列表,点击进去,它是一个get请求,地址是:https://yuedu.baidu.com/book/ ...
- JVM调优工具
JMap 首先要知道Java进程的pid. Windows: .. .. .. Linux: ps -ef | grep java 查看堆栈信息(jmap -heap pid) jmap -heap ...
- POJ 1236 Network of Schools (Tarjan)
Network of Schools Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 22745 Accepted: 89 ...
- php如何判断数组是一维还是多维
php>4.2 int count ( mixed $var [, int $mode ] ) -- 计算数组中的单元数目或对象中的属性个数 如果可选的 mode 参数设为 COUNT_R ...
- Elastic 基础篇(2)
1.基本概念 1)Elastic和RDMS对比 RDMS Elastic 数据库database 索引index 表table 类型type 行row 文档document 列column 字段fie ...
- (数学 尾0的个数) 51nod1003 阶乘后面0的数量
n的阶乘后面有多少个0? 6的阶乘 = 1*2*3*4*5*6 = 720,720后面有1个0. 收起 输入 一个数N(1 <= N <= 10^9) 输出 输出0的数量 输入样例 5 ...
- Calendar 类 案例 和 闰年的计算
Calendar 类 是一个抽象类 getInstance()直接返回子类对象 直接调用 主要方法:get set add 代码如下: package cn.lijun.demo; import ja ...
- jq实现百度图片移入移出内容提示框上下左右移动的效果
闲来无聊,看到百度图片hover的时候提示框的效果,遂想试一试自己能否实现. 百度图片hover的效果: 需求: 1. 当鼠标从图片上部移入的时候,提示框从上部移到正常位置.从上部移出的时候,提示框从 ...
- org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].Standard
Caused by: java.lang.NoSuchMethodError: javax.servlet.ServletContext.getVirtualServerName()Ljava/lan ...
- MySQL内存占用计算
##MySQL 最大可使用内存( M ): SELECT ( @@key_buffer_size + @@innodb_buffer_pool_size + @@query_cache_size + ...