逆向初学者做题记录  buuctf

SimpleRev

首先查壳,64位无壳

IDA里打开

看见了个Decry()函数,点进去,可以看到这个src和v9很明显是不正常的,然后选中src和v9,按H将其转换成十六进制,下面是转换完的

这里涉及到了一个大端序和小端序的概念

http://t.csdn.cn/e2EnG

再接着选中二者,按R

根据上面的Join函数,src和v9应该是翻转过来的 

双击key3可以看到

接下来是主要的部分,上面的key是ADSFKNDCLS

我这里将关键的部分复制了,然后改了改,写了个c脚本

运行完的结果

提交flag

Java逆向解密

首先拿到文件,看一下,是个java 文件,涉及到Java逆向,使用jadk

打开如下

然后就是读代码,然后破解它了

下面是一些能用到的jvav知识(初学者):

  • ArrayList 类是一个可以动态修改的数组

  • java里,Integer 相当于C里的int

  • for-each 循环通常用于遍历数组和集合,它的使用规则比普通的 for 循环还要简单,不需要初始变量,不需要条件,不需要下标来自增或者自减。来看一下语法:

for(元素类型 元素 : 数组或集合){
// 要执行的代码
}
  • valueOf() 方法用于返回给定参数的原生 Number 对象值,参数可以是原生数据类型, String等。

该方法是静态方法。该方法可以接收两个参数一个是字符串,一个是基数。主要有以下使用方式:

static Integer valueOf(int i)
static Integer valueOf(String s)
static Integer valueOf(String s, int radix)
实例
publicclass Test{
publicstaticvoid main(String args[]){
Integer x =Integer.valueOf(9);
Double c =Double.valueOf(5);
Float a =Float.valueOf("80");

Integer b =Integer.valueOf("444",16); // 使用 16 进制

System.out.println(x);
System.out.println(c);
System.out.println(a);
System.out.println(b);
}
}
编译以上程序,输出结果为:
9
5.0
80.0
1092

下面是解释完

看了别人的WP,好像我下载的文件和别人不一样,不一样在第21行,具体我也不知

flag{This_is_the_flag_!}

写脚本的时候需要注意一下:

  • 在python里,{}类对象为字典,而字典并非可迭代对象,无法进行迭代操作,而且使用除字典外使用{}本就是错误的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值