[SWPUCTF 2023 秋季新生赛]Junk Code

43 篇文章 1 订阅
20 篇文章 0 订阅

方法一:手动去除
image.png
image.png
将所有E9修改为90即可
方法二:花指令去除脚本

start_addr = 0x0000000140001454
end_addr = 0x00000001400015C7
print(start_addr)
print(end_addr)
for i in range(start_addr,end_addr):
    if get_wide_byte(i) == 0xE9:
        patch_byte(i,0x90)
        print("{}处的花指令已去除".format(hex(i)))
int __fastcall main(int argc, const char **argv, const char **envp)
{
  const char *v3; // rax
  char v5[96]; // [rsp-A0h] [rbp-B8h] BYREF
  char v6[56]; // [rsp-40h] [rbp-58h] BYREF
  int i; // [rsp-8h] [rbp-20h]
  int v8; // [rsp-4h] [rbp-1Ch]

  _main();
  v8 = 1;
  strcpy(v6, "NRQ@PC}Vdn4tHV4Yi9cd#\\}jsXz3LMuaaY0}nj]`4a5&WoB4glB7~u");
  printf("Input your flag:\n");
  scanf("%100s", v5);
  for ( i = 0; i < strlen(v5); ++i )
  {
    if ( (v6[i] ^ (i % 9)) != v5[i] )
    {
      v8 = 0;
      break;
    }
  }
  if ( v8 == 1 )
    v3 = "Right! Congratulation!";
  else
    v3 = "Wrong! Try agian!";
  printf("%s", v3);
  return 0;
}

exp

enc = r"NRQ@PC}Vdn4tHV4Yi9cd#\}jsXz3LMuaaY0}nj]`4a5&WoB4glB7~u"
enc = ''.join(chr(ord(x) ^ (j % 9)) for x, j in zip(enc, range(len(enc))))
print(enc)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值