网上大部分是动调,我尝试IDC解一下,

无壳,32位,放入IDApro,查看main函数

查看wrong和str函数,借出假的flag

a=[0x66,0x6B,0x63,0x64,0x7F,0x61,0x67,0x64,0x3B,0x56,0x6B,0x61,0x7B,0x26,0x3B,0x50,0x63,0x5F,0x4D,0x5A,0x71,0x0C,0x37,0x66]
for i in range(24):if(i&1==0):a[i]=chr(i^a[i])else:a[i]=chr(i+a[i])
print(''.join(a))

flag{fak3_alw35_sp_me!!}

,查看encrypty函数( 这题主要记录一下SMC的IDC脚本过程,SMC上一篇有介绍)

首先选中上面代码段部分(黑色),按D键,先转化为数据

然后使用IDC脚本

#include <idc.idc>static main()
{auto addr = 0x401500;auto i = 0;for(i=0;i<187;i++){PatchByte(addr+i,Byte(addr+i)^0x41);}
}

脚本运行之后还是不可以反编译

我们选中黄色数据按c键转化为代码。

然后选中下面的一大段数据,右键强制分析。

选force然后,选中红色区域,按p定义为函数。

反汇编之后

简单的异或,Buffer的内容为

'hahahaha_do_you_find_me?'

写脚本

v3=[0x0E,0x0D,0x09,0x06,0x13,0x05,0x58,0x56,0x3E,0x06,0x0C,0x3C,0x1F,0x57,0x14,0x6B,0x57,0x59,0x0D]
buffer='hahahaha_do_you_find_me?'
b=list(buffer)
f=''
for i in range(19):print(chr(ord(b[i])^v3[i]),end='')

结果:flag{d07abccf8a410c

少了一部分,我们继续看看汇编,我们先得把finally函数部分D键转化为数据,然后再把黄色(和灰色)部分C键转化为code,然后所有p定义为函数,再F5;

我懵逼了,没看懂。。。。

后面看的大佬的wp     大佬的wp (去看汇编代码!!!,猜测最后几位是与%tp&:是异或关系)

七分逆向,三分脑洞!!!

最后 flag{d07abccf8a410cb37a}

[BUUCTF]Reverse——[网鼎杯 2020 青龙组]jocker相关推荐

  1. BUUCTF Reverse/[网鼎杯 2020 青龙组]jocker

    BUUCTF Reverse/[网鼎杯 2020 青龙组]jocker 先看下文件信息,没有加壳,32位程序 运行一下,又是一道字符串比较的题目 用IDA32位打开,分析一下 // positive ...

  2. Buuctf [网鼎杯 2020 青龙组]jocker 题解

    目录 一.主函数逻辑 二.wrong函数和omg函数--假flag 1.wrong函数 2.omg函数 3.假flag 三.encrypt和finally函数--真flag 1.打开sp指针偏移显示 ...

  3. re -25 buuctf [网鼎杯 2020 青龙组]jocker

    [网鼎杯 2020 青龙组]jocker 前话:ida7.6设置栏内没有general,可以通过ctrl+shift+p打开命令面板,搜索option打开设置选项,于Disassembly设置堆栈显示 ...

  4. [网鼎杯 2020 青龙组]jocker

    [网鼎杯 2020 青龙组]jocker SMC(self-Modifying Code): 自修改代码,程序在执行某段代码的过程中会对程序的代码进行修改,只有在修改后的代码才是可汇编,可执行的.在程 ...

  5. [BUUCTF][网鼎杯 2020 青龙组]jocker 分析与记录

    无壳,IDA打开可以直接进入main函数: 第12行调用VirtualProtect函数更改了offset encrypt处的访问保护权限 BOOL VirtualProtect(LPVOID lpA ...

  6. buuctf刷题记录21 [网鼎杯 2020 青龙组]jocker

    今天挑战一下,结果最后还是看了别人的wp才写出来的 无壳,ida查看发现不能f5,原因堆栈不平衡 进行栈指针修改 修改出错的地方的栈指针偏移,快捷键alt+k,值改为0 然后就能f5了, 逻辑也不难, ...

  7. 网鼎杯2020 青龙组 jocker

    来看一眼题目逻辑哈,看函数名知道_Z5wrongPc那一处是个假加密函数,先不看...然后下面很明显是一道smc了 对加密函数的前186(0xBA)位异或 0x41 这里可以用idapython对加密 ...

  8. [网鼎杯 2020 青龙组]jocker(详解)

    首先我们查看一下信息,32位程序,无壳: 然后用IDA打开,提示// positive sp value has been detected, the output may be wrong! 出现了 ...

  9. Buuctf[网鼎杯 2020 青龙组]AreUSerialz

    [网鼎杯 2020 青龙组]AreUSerialz 打开题目仔细阅读源码 <?phpinclude("flag.php"); highlight_file(__FILE__) ...

最新文章

  1. java 头尾 队列_源码|jdk源码之栈、队列及ArrayDeque分析
  2. arcgis-shp文件属性表导出为dbf或txt
  3. ADB常用命令--不间断更新
  4. 解决浏览器拦截弹出窗口问题
  5. oracle 导入电子表格,oracle数据导入到电子表格中
  6. 【机器学习】鸢尾花数据探索
  7. anaconda安装第三方库两种方式
  8. Web安全攻防渗透测试实战指南笔记 三
  9. 基于51单片机GPS的导航系统设计(3)---毕设论文
  10. Spring AOP aspectjweaver.jar与aopalliance-1.0.jar 下载地址
  11. 关于在CSDN中写博客时如何插入图片
  12. 在Dart中使用FFI调用Rust函数
  13. sklearn.utils.Bunch的属性
  14. Ouino法国学习系统评价它是如何比其他学习软件
  15. 风之谷mobi-宫崎骏漫画kindle7本
  16. Flutter运行报错Automatically assigning platform `iOS` with version `9.0` on target `Runner`...
  17. vue具名插槽的使用
  18. JAXWS CXF JAXB + MyEclipse + Maven Byron自學視頻04
  19. python自动化通知webhook接口代码参考
  20. 【供应链】全面分析供应链类型

热门文章

  1. java 压缩多个文件_java实现一次性压缩多个文件到zip中的方法示例
  2. 一个html表单赋给另一个表单,是否可以将表单输入到另一个html表单
  3. mt7601u linux驱动下载,Ubuntu16.04安装DPO_MT7601U_LinuxSTA_3.0.0.4_20130913.tar.bz2
  4. -32767转化为二进制_程序员需要了解的硬核知识之二进制
  5. 成功解决TypeError: __init__() got an unexpected keyword argument 'indices'
  6. BlockChain:《世界经济论坛:区块链将如何重塑金融业?》—20160812—听课笔记
  7. ML之FE:结合Kaggle比赛的某一案例细究特征工程(Feature Engineering)思路框架
  8. linux下的/dev/shm/ 以及与swap目录的区别【转】
  9. python记录_day14 内置函数二 迭代 二分法
  10. wordpress学习笔记