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的更多相关文章

  1. android apk 逆向中常用工具一览

    关于apk 逆向中的一些工具的使用,看了不少文章,也使用过有很长一段时间了,今天对此做一总结: 几种文件之间的转换命令: 1. odex -> smali java -jar  baksmali ...

  2. Android apk逆向:反编译,回编译,签名,打包。

    Android apk逆向:反编译,回编译,签名,打包流程. 第一步: apk 反编译. 1) 打开命令行窗口,输入java -version, 检测当前java版本,若版本较低, 则下载JAVA S ...

  3. Android apk逆向实战

    简介 逆向Android apk其实是一个分析Android apk的一个过程,必须了解Android程序开发的流程.结构.语句分支.解密原理等等. 功能 破解一个注册验证程序(自写一个简单的注册验证 ...

  4. apk逆向 - smali动态调试

    author: Dlive date: 2016/10/6 0x00 前言 ​ 之前有人问过smali的动态调试方法,其实网上已经有很多文章讲这些内容,但是为了方便大家学习,我还是写一下让大家少走点坑 ...

  5. APK自我保护方法

    标 题: [原创]APK自我保护方法 作 者: MindMac 时 间: 2013-12-28,21:41:15 链 接: http://bbs.pediy.com/showthread.php?t= ...

  6. Atitit.反编译apk android源码以及防止反编译apk

    Atitit.反编译apk android源码以及防止反编译apk 1.1. Tool  apk逆向助手1 1.2. 二.使用dex2jar + jd-gui 得到apk的java源码1 1.3. 用 ...

  7. Android官方技术文档翻译——Apk 拆分机制

    本文译自androd官方技术文档<Apk Splits>,原文地址:http://tools.android.com/tech-docs/new-build-system/user-gui ...

  8. Mac上反编译Android apk安装包

    什么是反编译 我们知道,Android的程序打包后会生成一个APK文件,这个文件可以直接安装到任何Android手机上,因此,反编译就是对这个APK进行反编译.Android的反编译分成两个部分: 一 ...

  9. 零开始Android逆向教程(一)——初探Android逆向

    这段时间因为某些业务驱动,开始研究一些逆向相关的东西,浏览了下其所包含的大致内容,发现真是一个新大陆,跟之前耳听目染过的一些门面介绍完全不是一个层级的,真正的印证了下手难这一说法.   谨此以本文开始 ...

随机推荐

  1. http 请求头和响应头

    客户端发送请求过程带着的数据: 1.请求地址 2.请求方式 3.请求头 request headers 4.请求参数 https://www.juhe.cn/ 130.... 1a2b....pei ...

  2. _future_用法总结

    写这篇文章主要是参考以下两篇博客 https://blog.csdn.net/stan_pcf/article/details/60465665 https://www.liaoxuefeng.com ...

  3. Elastic 安装篇(1)

    1.Elasticsearch下载安装 https://www.elastic.co/cn/downloads/elasticsearch 解压: 2.安装head https://github.co ...

  4. PHP操作cookie

    1.当只有一个参数的时候,默认是删除,响应报文里面设置了一个过去的时间 setcookie('key2'); 2.当有两个参数的时候,是设置cookie setcookie('key','value1 ...

  5. opencv: 线性拟合

    opencv提供了fitline函数用于直线拟合,原型为: C++: void fitLine(InputArray points, OutputArray line, int distType, d ...

  6. 5款 Mac 常用PDF阅读和编辑软件推荐

    PDF和Word.TXT等文档一样,都是我们最常用的文档格式,那么一款好用的浏览或编辑PDF的工具就很有必要了,今天和大家分享5款Mac上优秀的PDF阅读和编辑工具. 以下内容来自[风云社区 SCOE ...

  7. HDU5542 BIT优化dp

    http://acm.hdu.edu.cn/showproblem.php?pid=5542 题意:求严格递增的长度为M的序列的组数. 当dp的优化方案不那么容易一眼看出来的时候,我们可以考虑先写一个 ...

  8. python kafka

    转载:https://zhuanlan.zhihu.com/p/31731892 https://kafka-python.readthedocs.io/en/master/usage.html

  9. MyBatis-Cache

    一.一级缓存 /** * 一级缓存(本地缓存):SqlSession 级别.一级缓存是默认开启的,为 SqlSession 级别的一个Map * 与数据库同一次会话期间查询到的数据会放在本地缓存中,以 ...

  10. shiro的基本认识及做一个简单的授权登陆的例子

    先推荐一个网站,无意中发现的.感觉蛮好的. 推荐一套完整的Shiro Demo,免费的.Shiro Demo:http://www.sojson.com/shiroDemo已经部署到线上,地址是htt ...