CISCN——2024——re——app-debug

输入检查类题型

package com.example.re11113;

import android.os.Bundle;
import android.util.Log;
import android.view.View.OnClickListener;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private EditText editText;

    private boolean legal(String paramString) {
        return paramString.length() == 38 && (paramString.startsWith("flag{")) && paramString.charAt(paramString.length() - 1) == 0x7D && !inspect.inspect(paramString.substring(5, paramString.length() - 1));
    }

    @Override  // android.view.View$OnClickListener
    public void onClick(View v) {
        Log.d("Button ID", "Button ID: " + v.getId());
        if(v.getId() == 0x7F080003) {  // id:Button
            if(this.legal(this.editText.getText().toString())) {
                Toast.makeText(this, "You are right.", 0).show();
                return;
            }

            Toast.makeText(this, "You are wrong.", 0).show();
        }
    }

    @Override  // androidx.fragment.app.FragmentActivity
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.setContentView(layout.activity_main);
        Button button = (Button)this.findViewById(id.Button);
        this.editText = (EditText)this.findViewById(id.edit_text);
        button.setOnClickListener(this);
    }
}

这是重点,前面在检查flag{}

跟入inspect函数,可以看到时DES加密最后比较字符串(base64)JqslHrdvtgJrRs2QAp+FEVdwRPNLswrnykD/sZMivmjGRKUMVIC/rw==

这个jni文件是在so文件里面,是低层文件

apk其实是个压缩包,直接解压就可以看见so文件

IDA打开

ok,IDA关闭,不懂

┭┮﹏┭┮

动调不了

下了断点,到这直接G

我看大佬们都是HOOK ,我真不会,我调了好几天天了o(╥﹏╥)o,我勒个豆

重要弄好了

Hook神器: frida超详细安装教程_frida-tools-优快云博客

大家看这个哥的教程吧

很详细,期间有问题,你可以重新弄一下模拟器,反正我是模拟器有问题

得到flag

### APP调试方法及工具 对于应用程序(APP)的调试,在嵌入式开发环境中通常采用多种方式和技术手段。当涉及到基于Zynq等FPGA SoC平台的应用程序调试时,开发者可以选择使用Xilinx SDK集成环境内的调试功能。 通过JTAG接口连接目标板与主机端PC上的Vivado或SDK软件,能够实现断点设置、单步执行以及变量监视等功能[^3]。具体操作如下: - **创建项目**:在SDK中建立新的应用工程项目。 - **配置硬件平台**:导入HDF文件以描述所使用的硬件架构。 - **编写/移植代码**:完成所需的功能编码工作。 - **编译构建**:生成可下载至设备运行的目标文件(.elf)。 - **加载映像**:经由编程电缆将ELF文件烧录进片内Flash或其他非易失性存储介质之中。 - **启动调试会话**:点击“Debug Configurations...”,选择相应的选项卡来进行参数设定;之后按下绿色虫子图标即可开启一次完整的在线调试流程。 此外,还可以借助于GDB服务器模式远程操控命令行界面下的GNU Debugger进行更深入细致的操作分析。 ```bash target remote localhost:3121 ``` 以上指令用于指定本地监听端口从而允许外部客户端接入并接管当前进程状态。 ### FSBL调试教程 针对First Stage Boot Loader (FSBL),其作为系统初次加电后的首个被执行部分承担着至关重要的角色——负责初始化必要的外设资源并将控制流传递给第二阶段引导加载程序或者直接进入操作系统内核空间。为了便于理解整个过程的工作机制并且排查可能出现的问题,有必要掌握一些有效的调试技巧。 #### 启用详细的日志记录 默认情况下,FSBL不会显示过多有关内部运作细节的消息提示。然而,可以通过简单的预处理器宏定义调整来改变这种状况。编辑`fsbl_debug.h`头文件中的条件编译语句,确保启用了`FSBL_DEBUG_INFO`标记,则每当遇到特定事件发生之时都会向串行终端发送对应级别的诊断字符串[^1]。 ```c #if defined(FSBL_DEBUG_INFO) xil_printf("Detailed debug information enabled.\r\n"); #endif ``` 上述片段展示了如何依据是否开启了DEBUG标志决定是否输出额外的信息。 #### 利用仿真模型验证逻辑正确性 除了实际物理平台上开展测试之外,也可以考虑运用ModelSim/Questa这类高级别的RTL级模拟器配合预先准备好的波形库文件对尚未固化下来的固件版本做初步检验。这样做的好处是可以快速迭代设计思路而无需反复经历耗时较长的实际部署环节。 #### 结合ChipScope Pro探针技术定位故障点 面对难以捉摸的随机错误现象或是性能瓶颈所在之处,不妨尝试引入专门面向赛灵思器件优化过的在线监测方案——即安装Probes IP Core到现有电路布局里面去捕捉实时信号变化情况,并同步传输回电脑供进一步离线处理。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

name_name123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值