64位的exe,拖入ida64静态分析一波。

一.先是一大堆的赋值语句,有点懵,后面在分析handler的时候,也直接导致了我卡壳,这里还是得注意一下这些局部变量都是临近的,所以可以直接看成一个连续数组来看待。

二.这个逻辑看上去还是挺简单的,将输入的字符串进行一波处理,之后再和正确的进行对比,其实这题我感觉有个非预期的写法,就是反正是处理,用黑盒,直接动调,看看26个字母进过处理后的字符串是啥样的,然后再

对正确的,进行一波反推,得到flag。。。。我没试过,不过感觉这样的话,属于实在做不出来的情况下,实际中,还是得多学习。

三.进入那个处理函数,看看里面是个啥

典型的while加switch的虚拟机,说明了这种题型是属于那种已知opcode字节码的,来逆向虚拟机,分析的。。。ok,进入下一步看看,里面的handler是做了什么

定义了一个栈的结构,注意一下这个是结构体,我直接在ida中插入了,这里说下怎么插入的,就是,先点到这个界面。

按insert后,构造出一个结构体,里面添加成员变量是按D,我这里构造成了这样

三.分析函数功能,发现操作基本上都是入栈和出栈,我重新命名了一下

四.这里opcode很多,只能动调一下看看程序是怎么走的,又是如何对输入进行处理的,这里是最坑的,我分析了挺久,看了其他巨佬的wp,我发现我贼菜,他们都可以通过动调找到规律,我是单步而且后面来找错了233,特别注意就是传入进来的是存放数组地址的那个变量地址,这点要注意,然后这里的加一,是比如V2,加一后变成了v3,而不是数组地址加一,我是这里卡了,后面其实我不去想,也能猜到,这东西肯定有规律的,站在出题人的角度去想,才是制胜法宝。

五.我这边就放令则师傅的伪汇编了。。我自己写有点丑

六.怪不得之前赋值语句三个字节中,有一个字节不同,每一组都是这样。。原来中间是我们异或所需要的。。。将结果提取出来,进行异或,flag就出来了

最新文章

  1. jira 6.3.6安装-汉化-破解
  2. STM32时钟理解
  3. 由SimpleAyncTaskExecutor到ListenableFutureTask
  4. kettle日志记录
  5. Hadoop2.2 federnation联盟的搭建
  6. QEvent大全,有中文解释
  7. Tomcat - DBCP 配置
  8. Dapper使用方法
  9. 一段sql的优化
  10. 我的第一份vim程序
  11. AFNetworking 用法详解
  12. PHP Laravel 环境与框架结构
  13. 056、macvlan网络结构分析(2019-03-25 周一)
  14. [转]Java 反射在实际开发中的应用
  15. canvas功能函数
  16. ARGB和PARGB
  17. iOS:制作一个简易的计算器
  18. Java Socket实现基于TCP和UDP多线程通信
  19. 快速掌握Gif动态图实现代码
  20. 转: 将Eclipse代码导入到AndroidStudio的两种方式 ,测试了方法2,成功。

热门文章

  1. MongoDB(5)- Document 文档相关
  2. Linux分区创建、挂载
  3. ARM-CPU卷积网络的自动调谐
  4. Spring如何使用三级缓存解决循环依赖
  5. Kubernetes 实战——发现应用(Service)
  6. 使用sign签名发送请求
  7. SpringBoot和Spring到底有没有本质的不同?
  8. 【题解】滑雪 luogu1434 记忆化搜索
  9. 【题解】ball 数论
  10. 将Winform和wpf的界面转换为CPF代码用来实现跨平台