一.概述

这题感觉要懂一些开发的东西才能弄,正向和逆向是永远离不开的

二.先用jeb打开,找到AndroidMainfest这个文件,找到启动的主活动是啥

虽然一般也是就是MainActiivity,不过确实一下也挺好的,发现就是这个活动,我们跟进去看看

三.跟进MainActivity

先看这个onCreate方法,毕竟启动这个活动是先调用这个方法的。

然后发现有个Myapp.m的字段,是用来是否注册的东西,这波讲道理有点意思

这个默认是初始化为0的,毕竟你什么都没输入能注册的了吗。。。

接下来才是重点。

这里给按钮设置了一个点击事件,由于上面已经知道是默认为0了,所以看if就够了,再跟进去

设置了一个隐式的intent对象,startActivity之后,启动这个活动

这里又调用了一个方法出来getApplication方法返回一个对象再调用一个saveSn()方法来验证注册码的,点击那个方法,跟进去

System.loadLibrary是动态加载so文件的方法,原理就是先将so文件下载到本地之后,再复制到对应安装包的路径下,这步比较关键

然后就是native都是so文件中的函数,不过是过jni来调用,发现这个流程是先调用initSN()方法,再调用这个东西,saveSn()方法

这里就需要找so文件中的东西了,ida安排

这里讲道理挺懵的,毕竟ndk的玩意没接触过,动态加载要找JNI_ONload方法,找它的动态注册表

找它的注册表

这里其实已经很明显了,n1 -》initSN,n2-》saveSN,n3->work

先看n1

这里其实就是从/sdcard/reg.dat中取出字符串,和那个E开头的判断是否相等,并改变v8的值,这里v8的值其实挺关键的,后面就会知道

接下来看n2

这里就是对注册码一波处理,其实就是对每个字符异或一个值,这里挺好逆的。将加密后的结果存入那个文件中

接下来n3

发现getValue()方法取出了一个值,用来判断的,说明要为1时就对了,而且还调用了n1一次,不就是前面处理后的结果和E开头的字符串比较吗

直接写算法逆回去就结束了

a="EoPAoY62@ElRD"
b="W3_arE_whO_we_ARE"
v10=0
v9=2016
flag=""
for i in range(len(a)):
if v10%3==1:
v9=(v9+5)%16
v11=b[v9+1]
elif v10%3==2:
v9=(v9+7)%15
v11=b[v9+2]
else :
v9=(v9+3)%13
v11=b[v9+3]
flag+=chr((ord(a[v10])^ord(v11)&0xff))
v10+=1 print(flag)

记得加入xman{}括号中

XCTF_Android 黑客精神的更多相关文章

  1. 读书摘要,一种新的黑客文化:programming is forgetting

    http://opentranscripts.org/transcript/programming-forgetting-new-hacker-ethic/ 这篇文章非常有意思,作者是一个计算机教师, ...

  2. 黑客们的故事(连载六):IT世界里的理想主义者

    一头疏于梳理的长发和一把肆意生长的大胡子,往往可能是人们对于理查德马修斯托曼的第一印象.这位马上就要过60岁生日的自由软件基金会主席不用手机.不买房.没有汽车,看起来像是个流浪汉,但是却是美国工程院院 ...

  3. 【Sharing】如何成为一名黑客

    [声明]此文为转载,只为收藏. 从小到大听说了无数关于“电脑黑客”的故事,比如XXX入侵美国五角大楼,再比如前几年的“熊猫烧香”病毒,这些故事的主角都被我们的媒体称之为“黑客”.其实这些人,更大程度上 ...

  4. Linux是一门真正的黑客高手艺术

    黑客这个词从诞生到现在,从来就没有解释为“高级入侵者”.“病毒制造者”或者“QQ盗号者”过.我至今不清楚在中国是谁先把黑客和这些无聊的词汇联系在了一起,导致如此多的人被误导.但有一点是肯定的,不负责任 ...

  5. 黑客白皮书:如何成为一名黑客(附FAQ)

    内容一览 为什么会有这份文档? 什么是黑客? 黑客应有的态度 黑客的基本技能 黑客文化中的地位 黑客和书呆子(Nerd)的联系 风格的意义 其它资源 FAQ(常问问题解答)   作为Jargon Fi ...

  6. 多名历年高考状元最终选择做中国顶尖黑客 - imsoft.cnblogs

    原标题:揭秘中国顶尖黑客:二分之一是历年高考[微博]状元 “二分之一是各地的历年高考状元,二分之一是数学专业,二分之一来自微软.” Keen这样的团队是坚决与黑产划清界限的,这也是圈内的“道德洁癖”, ...

  7. 软工读书笔记 week4 ——《黑客与画家》下

    因为时间有限,只对书中后半部分几个篇章进行了阅读.        一.另一条路       作者以他自己为例,在那个没人知道什么叫“软件运行在服务器时”的时代,他和朋友选择创业时,没有选择写传统的桌面 ...

  8. redux-amrc:用更少的代码发起异步 action

    很多人说 Redux 代码多,开发效率低.其实 Redux 是可以灵活使用以及拓展的,经过充分定制的 Redux 其实写不了几行代码.今天先介绍一个很好用的 Redux 拓展-- redux-amrc ...

  9. ZIP压缩算法详细分析及解压实例解释

    最近自己实现了一个ZIP压缩数据的解压程序,觉得有必要把ZIP压缩格式进行一下详细总结,数据压缩是一门通信原理和计算机科学都会涉及到的学科,在通信原理中,一般称为信源编码,在计算机科学里,一般称为数据 ...

随机推荐

  1. 为何使用thrift-rpc与http的选择

    在工作中偶然看到公司旧架构在loaclserver中使用的是thrift,遂记录一下 thrif作为一种rpc框架 接口描述语言和二进制通信协议,至于为何使用thrift 其问题本质是为何在已有htt ...

  2. MindSpore激活函数总结与测试

    技术背景 激活函数在机器学习的前向网络中担任着非常重要的角色,我们可以认为它是一个决策函数.举个例子说,我们要判断一个输出的数据是猫还是狗,我们所得到的数据是0.01,而我们预设的数据中0代表猫1代表 ...

  3. java_[类加载器]

    Class 与 类加载 Class对象由JVM自动产生,每当一个类被加载时,JVM就自动为其生成一个Class对象,通过Class对象可以获得类的相关信息. 将类信息读到内存中过程,称为类加载 Jav ...

  4. 【MybatisPlus】数据库的datetime类型字段为空的时候,报错空指针?

    一.发现经历 事情是这样的,我今天本来要演示系统,就去前端同学的页面上点一点.不小心点到了其他同事编写的服务,然后界面就报错了.这给我吓得,这还能演示吗这.然后,我就去服务器查看了一下日志,发现了如下 ...

  5. AIFramework框架Jittor特性(下)

    AIFramework框架Jittor特性(下)

  6. ISP_DPC坏点矫正

    ISP_DPC坏点矫正 1. 坏点介绍 图像坏点(Bad pixel) : 图像传感器上光线采集点(像素点)所形成的阵列存在工艺上的缺陷,或光信号进行转化为电信号的过程中出现错误,从而会造成图像上像素 ...

  7. 摄像头ISP系统原理(上)

    摄像头ISP系统原理(上) ISP(Image Signal Processor),即图像信号处理器,用于处理图像信号传感器输出的图像信号.它在相机系统中占有核心主导的地位,是构成相机的重要设备. 主 ...

  8. 微调BERT:序列级和令牌级应用程序

    微调BERT:序列级和令牌级应用程序 Fine-Tuning BERT for Sequence-Level and Token-Level Applications 为自然语言处理应用程序设计了不同 ...

  9. 一文彻底理解Apache Hudi的多版本清理服务

    Apache Hudi提供了MVCC并发模型,保证写入端和读取端之间快照级别隔离.在本篇博客中我们将介绍如何配置来管理多个文件版本,此外还将讨论用户可使用的清理机制,以了解如何维护所需数量的旧文件版本 ...

  10. 【NX二次开发】三点画圆,三角形外心,已知三点求圆心

    已知P1.P2.P3,求点O 算法:三点不在一条直线上时,通过连接任意两点,作中垂线.任意两条中垂线的交点是圆心.