前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【愚公系列】2023年05月 攻防世界-MOBILE(easyjni)

【愚公系列】2023年05月 攻防世界-MOBILE(easyjni)

作者头像
愚公搬代码
发布2023-05-24 10:07:51
2150
发布2023-05-24 10:07:51
举报
文章被收录于专栏:历史专栏历史专栏

前言

下面介绍两个反编译工具

  • jadx是一个用于反编译Android APK文件的开源工具,静态反编译,查找索引功能强大
  • jeb和IDA很像,属于动态调试,可以看java汇编也可以生成伪代码,还可以动态attach到目标调试

对于so文件的逆向工具选择

  • IDA逆向工具是一款反汇编器,被广泛应用于软件逆向工程领域,能够反汇编各种不同平台的二进制程序代码,并还原成可读的汇编代码。

Objection是一款移动设备运行时漏洞利用工具,该工具由Frida驱动,可以帮助研究人员访问移动端应用程序,并在无需越狱或root操作的情况下对移动端应用程序的安全进行评估检查。

安装命令

代码语言:javascript
复制
pip3 install objection 

frida是一款便携的、自由的、支持全平台的hook框架,可以通过编写JavaScript、Python代码来和frida_server端进行交互

frida的安装可以参考:https://www.jianshu.com/p/60cfd3f6afde

一、easyjni

1.题目

在这里插入图片描述
在这里插入图片描述

2.答题

2.1 运行app

在这里插入图片描述
在这里插入图片描述

发现字符串:You are wrong!Bye~

2.2 jadx反编译apk文件

搜索字符串

在这里插入图片描述
在这里插入图片描述

发现代码

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
package com.a.easyjni;

import android.os.Bundle;
import android.support.v7.app.c;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

/* loaded from: classes.dex */
public class MainActivity extends c {
    static {
        System.loadLibrary("native");
    }

    /* JADX INFO: Access modifiers changed from: private */
    public boolean a(String str) {
        try {
            return ncheck(new a().a(str.getBytes()));
        } catch (Exception e) {
            return false;
        }
    }

    private native boolean ncheck(String str);

    /* JADX INFO: Access modifiers changed from: protected */
    @Override // android.support.v7.app.c, android.support.v4.a.i, android.support.v4.a.aa, android.app.Activity
    public void onCreate(Bundle bundle) {
        super.onCreate(bundle);
        setContentView(R.layout.activity_main);
        findViewById(R.id.button).setOnClickListener(new View.OnClickListener() { // from class: com.a.easyjni.MainActivity.1
            @Override // android.view.View.OnClickListener
            public void onClick(View view) {
                if (MainActivity.this.a(((EditText) ((MainActivity) this).findViewById(R.id.edit)).getText().toString())) {
                    Toast.makeText(this, "You are right!", 1).show();
                } else {
                    Toast.makeText(this, "You are wrong! Bye~", 1).show();
                }
            }
        });
    }
}

进入a函数

在这里插入图片描述
在这里插入图片描述

这里我们知道了 是我们输入的字符 经过变形的base64加密码表为 然后传进了 so 里面的方法 然后我们去so里面找函数

2.3 IDA解析SO

用 ida 打开 so 文件,找到 ncheck 函数,发现将传进来的字符串首先将前 16 个字符和后 16 个字符交换位置,然后将这个新字符串两两一组互相交换位置,最后和一个字符串比较,相等则返回TRUE

在这里插入图片描述
在这里插入图片描述

解密脚本

代码语言:javascript
复制
import base64
 
import string
 
string1 = string.maketrans("i5jLW7S0GX6uf1cv3ny4q8es2Q+bdkYgKOIT/tAxUrFlVPzhmow9BHCMDpEaJRZN","ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/")
strEnBase64 = "QAoOQMPFks1BsB7cbM3TQsXg30i9g3==".translate(string1)
 
print(strEnBase64)
 
strFlag = base64.b64decode(strEnBase64)
 
print(strFlag)

flag为: flag{just_ANot#er_@p3}


总结

找到关键字,逆向分析流程,写出对应的脚本就可以拿到答案

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-05-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 一、easyjni
    • 1.题目
      • 2.答题
        • 2.1 运行app
        • 2.2 jadx反编译apk文件
        • 2.3 IDA解析SO
    • 总结
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档