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. Solr7.1--- 单机Linux环境搭建

    应网友的要求,写个关于Linux单机的 首先,把MySQL驱动包和solr7.1安装包上传到服务器,我上传到了自定义的目录/mysoft 执行服务安装脚本 1. 先切换到root用户 2. 解压出脚本 ...

  2. 安卓手机root

    https://jingyan.baidu.com/article/ca41422ffe6b031eae99ed9a.html

  3. appium desktop 1.7 byName不能用,重写

    @Override public WebElement findElementByName(String name){ String string="new UiSelector().tex ...

  4. mac java_home等系统参数配置

    JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/HomeCLASSPAHT=.:$JAVA_HOME/lib ...

  5. 4.1、实现4个LED灯同时闪烁

    图中可以看出,P1的0.1.3.4引脚分别连接着4个LED.控制引脚状态,来控制LED. #include "ioCC2530.h" //引用CC2530头文件 /******** ...

  6. 高级组件——选项卡面板JTabbedPane

    选项卡面板:JTabbedPane(标签位置,布局方式) 标签位置:JTabbedPane.TOP,JTabbedPane.BOTTOM,JTabbedPane.LEFT,JTabbedPane.RI ...

  7. text-overflow文本溢出隐藏“...”显示

    一.文本溢出省略号显示 1.文本溢出是否“...”显示属性:text-overflow:clip(不显示省略标记)/ellipsis(文本溢出时“...”显示) 定义此属性有四个必要条件:1)须有容器 ...

  8. Luogu P4197 Peaks

    题目链接 \(Click\) \(Here\) 做法:\(Kruskal\)重构树上跑主席树 构造方法:把每条边拆出来成一个点,点权是原先的边权.每次连边的时候,连的不再是点,而是其原先点所在的联通块 ...

  9. ajax请求封装函数

    写封装函数的套路 1.先写出这个函数原来的基本用法 2.写一个没有形参空函数,将上一步的代码直接作为函数体, 3.根据使用过程中,抽象出来需要变的东西作为形参 function ajax (metho ...

  10. websocket实现简单的通信

    websocket server端 #coding=utf8 #!/usr/bin/python import struct,socket import hashlib import threadin ...