ROIS_BCTF2017_Re_writeup

本文介绍了在BCTF-2017中的一道Mobile逆向题目,涉及对pingpong函数的分析。通过使用JEB,作者发现需要执行大量ping和pong操作来获取flag。由于代码被O-LLVM混淆,作者选择编写apk复用so文件,并详细说明了如何处理sleep函数以避免影响。最终,通过修改代码并运行,得到了flag:BCTF{MagicNum4500009}。
摘要由CSDN通过智能技术生成

pingpong

刚刚过去的BCTF-2017有一道Mobile逆向题,下面放出我的解题思路
题目链接: https://pan.baidu.com/s/1boUKogv 密码: 9b52

拿到题目用JEB打开

得到两个比较有用的函数

public void onClick(View arg7) {
            if(MainActivity.this.tt % 2 == 1) {
                MainActivity.this.p = 0;
                MainActivity.this.num = 0;
                MainActivity.this.tt = MainActivity.this.ttt;
            }

            --MainActivity.this.tt;
            MainActivity.this.p = MainActivity.this.ping(MainActivity.this.p, MainActivity.this.num);
            ++MainActivity.this.num;
            if(MainActivity.this.num >= 7) {
                MainActivity.this.num = 0;
            }

            View v0 = MainActivity.this.findViewById(2131427414);
            ((TextView)v0).setText("PING");
            if(MainActivity.this.tt == 0) {
                ((TextView)v0).setText("FLAG: BCTF{MagicNum" + Integer.toString(MainActivity.this.p) + "}"
def state_deflection_angle(roi_blobs_result): ''' 说明:偏转状态值返回 ''' # ROI区域权重值 #ROIS_WEIGHT = [1, 1, 1, 1] ROIS_WEIGHT = [1, 0, 0, 1] state_crossing = False deflection_angle = 0 down_center = 0 center_num = 0 # 偏转值计算,ROI中心区域X值 centroid_sum = roi_blobs_result['up']['cx']*ROIS_WEIGHT[0] + roi_blobs_result['middle_up']['cx']*ROIS_WEIGHT[1] \ + roi_blobs_result['middle_down']['cx']*ROIS_WEIGHT[2] + roi_blobs_result['down']['cx']*ROIS_WEIGHT[3] if roi_blobs_result['up']['blob_flag']: center_num += ROIS_WEIGHT[0] if roi_blobs_result['middle_up']['blob_flag']: center_num += ROIS_WEIGHT[1] if roi_blobs_result['middle_down']['blob_flag']: center_num += ROIS_WEIGHT[2] if roi_blobs_result['down']['blob_flag']: center_num += ROIS_WEIGHT[3] center_pos = centroid_sum / (ROIS_WEIGHT[0]+ROIS_WEIGHT[1]+ROIS_WEIGHT[2]+ROIS_WEIGHT[3]) deflection_angle = (IMG_WIDTH/2)- center_pos # 判断两侧ROI区域检测到黑色线 if roi_blobs_result['left']['blob_flag'] and roi_blobs_result['right']['blob_flag']: # 判断两侧ROI区域检测到黑色线处于图像下方1/3处 if roi_blobs_result['left']['cy'] <= ((IMG_HEIGHT/3)) and roi_blobs_result['right']['cy'] <= ((IMG_HEIGHT/3)): # 当最下方ROI区域的黑线宽度大于140像素(检测到路口) if roi_blobs_result['down']['w'] > 235: state_crossing = True #elif roi_blobs_result['up']['blob_flag']: #state_crossing = True return down_center, state_crossing, deflection_angle 详细剖析里面的值都是怎么计算的
最新发布
07-11
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值