2019河南赛区iscc 线下总结(安卓题解)

这次比赛确实恶心到了 真的恶心到了   我这里真的吐槽一下iscc 河南赛区

上一年实话实说 题目比较多   下午的awd 可能高地题目比较难  没多少队打通 但是确实题目和时间来说 算是比较合理  能做出来有些题目

今年上午直接给两道re  一道杂项   实话实说 安卓re 我是真的做不出来

但是!!!!  那个让拼英语单词的re 题是什么鬼,,,, 真的是醉了

虽然下面安卓 也是拼的 但是顺序已经给了(而且安卓题 为啥安装不上)

今年awd    竟然直接给权限 导致 人家直接给你把配置删了 打都没办法打    环境也不保存 导致,,,, 恢复从3点恢复到5点。。。

真的醉了   而且 题目竟然都是 2018全国赛区的题目。。。 

真的,,,, 服了,,

现在想想 我打的最好的比赛 无疑就是蓝桥杯

本来这个总结有点负能量  不是很想写  但是今天 问了一个南邮大佬 把那个 安卓re  做出来了  这里感谢一下那个大佬

参考链接

https://blog.csdn.net/MozhuCY/article/details/81076214

然后 进入正题 

这个题目是需要恢复出来 dex的

在两个so 文件里面 看函数名就能看出来很多东西

 

 

这里的python脚本

#!/usr/bin/env python2
# -*- coding:utf-8 -*-

import struct
if __name__=="__main__":
  encode = open("protected.jar", "rb").read()
  fdecode = open("origin.dex","wb")
  decode = ''
  cout=0
  for d in encode:
    decode += chr((~ord(d)&0xff)&0xff)
    cout+=1
 
  with open('origin.dex', 'wb') as f:
    f.write(decode)

dex 转一下

然后对上了这个字符串 然后 去找这个地址 在  我们刚刚得出来的那个dex   拖入ida 里面

然后 找到这个地址

v8 v9 很好看出来是两个下标

解密脚本

#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<vector>
#include<iostream>
#include<map>
#include<time.h>
#include<queue>
#include "windows.h"
using namespace std;
int key[3][3]={{ 17, 12, 3 },{ 21, 12, 9 }, { 17, 14, 6 }};
char encode_str[]="OYUGMCH>YWOCBXF))9/3)YYE";
int s1,s2,s3;
int main()
{
    int flag=0;
    for(int i=0;i<8;i++)
    {
        for(int l1=48;l1<127;l1++)
        {
           for(int l2=48;l2<127;l2++)
           {
               for(int l3=48;l3<127;l3++)
               {
                    s1=(l1-0x41)*(key[0][0])+(l2-0x41)*(key[0][1])+(l3-0x41)*(key[0][2]);
                    s2=(l1-0x41)*(key[1][0])+(l2-0x41)*(key[1][1])+(l3-0x41)*(key[1][2]);
                    s3=(l1-0x41)*(key[2][0])+(l2-0x41)*(key[2][1])+(l3-0x41)*(key[2][2]);
                    if((0x41+s1%0x1a==encode_str[i*3])&&(0x41+s2%0x1a==encode_str[i*3+1])&&(0x41+s3%0x1a==encode_str[i*3+2]))
                     {
                         flag=1;
                         printf("%c%c%c  ",l1,l2,l3);
                     }

               }
           }

        }
         printf("\n===========\n");

    }
    return 0;
}

最后还是要拼接字符串

这个题目 知道了很多

比如  比如  python 的负数取余和 C的不一样 两者 策略不一样

比如 C的~操作和 python的不一样 我一开始用c写的 发现dex 转化 错误  还以为 是自己有问题

比如  dex 可以用ida 看 我一开始还以为那个地址 是需要动态调试   是映射的地方 可是后来发现是dex 里面的地址  后来想想也不太可能 映射已有段还行  映射没有的段是不可能的 一万一 那个段的地址被人家用了就gg了

然后 前n天一直在想怎么安装这个apk 

按理说这个apk 应该可以安装的啊  只是加了一个壳 如果壳没有问题的话 不会影响程序的运行的啊。。。。

如果有大佬能安装还请 指教

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值