【reverse】2021 极客大挑战(部分)

本文详细记录了一位逆向工程师在极客大挑战中的经历,涉及Linux环境的调试、C语言代码的逆向分析、Win32程序的脱壳与解密、WebAssembly的静态分析以及Go语言程序的暴力破解。通过IDA Pro工具,作者解密了不同类型的加密,并给出了解密过程和关键代码片段,展示了逆向工程在解决实际问题中的应用。
摘要由CSDN通过智能技术生成

【reverse】2021 极客大挑战(部分)

1、调试

0x1

image-20211101211928342

image-20211101211937636

什么?得安装linux虚拟机?像我这种直接用ubuntu系统的根本不虚!

0x2

尝试直接运行,未果

image-20211101212033495

拖入ida中分析,先看main

image-20211101212537439

上来就比较字符串,然后返回,v4是栈里的变量,初始化为0,必然不等于后面的字符串

看看汇编,发现了端倪

image-20211101212748531

如果不相等就去loc_14A0这个函数,发现这个函数直接退出了,没啥用

image-20211101212828980

我们看看如果想等跳转的函数loc_14551。怎么说都比上面退出的函数正常吧。

image-20211101212918624

0x3

到这里我们想直接调用到loc_1455这个函数其实也可以,改汇编的jnz为jz就可以了

image-20211101213059321

image-20211101213104489

保存为ts1,退出,运行,一气呵成!

get flag

image-20211101213135620

2、Re1

0x1

image-20211101214435940

image-20211101214442031

逆向人必备技能了属于是

0x2

拖入ida中分析

int __cdecl main(int argc, const char **argv, const char **envp)
{
   
  char v4[256]; // [rsp+20h] [rbp-60h] BYREF
  char Str[40]; // [rsp+120h] [rbp+A0h] BYREF
  int v6; // [rsp+148h] [rbp+C8h]
  char v7; // [rsp+14Ch] [rbp+CCh]
  char v8[58]; // [rsp+150h] [rbp+D0h]
  char v9[2]; // [rsp+18Ah] [rbp+10Ah] BYREF
  int v10; // [rsp+198h] [rbp+118h]
  int i; // [rsp+19Ch] [rbp+11Ch]

  _main(argc, argv, envp);
  v8[0] = 21;
  v8[1] = 113;
  v8[2] = 44;
  v8[3] = 4;
  v8[4] = 37;
  v8[5] = 113;
  v8[6] = 40;
  v8[7] = 16;
  v8[8] = 21;
  v8[9] = 44;
  v8[10] = 121;
  v8[11] = 40;
  v8[12] = 34;
  v8[13] = 45;
  v8[14] = 18;
  v8[15] = 38;
  v8[16] = 25;
  v8[17] = 45;
  v8[18] = 6;
  v8
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值