太菜了 做了好久没做出来,参考其他师傅的解答总结一下

题目背景:

老规矩,Ex PE打开,32位无壳程序,用IDApro打开;主程序如下:

主体是一个while循环,如果我们想让while结束,我们就需要使得两个if成立;

我们首先看跟v3有关的loc_4011A0,点进去,发现无法反编译,解决办法IDA无法反编译

编译成功之后:

发现v3的值一直为1;

我们来看看sub_401830函数,主要由两个while构成,我们先来看第一个while

主要是把输入的转换成数字并且按照每两位分成一组,也就是输入a21c32ba,最后分为0xa2,0x1c,0x32,0xba,接下来看第二个while循环;

我们开始从后向前看, 最后需要输出v13==0xAB94,我们先点击进入sub_401470函数查看,

一堆的if判断,把判断条件转换为字符查看,这些字符就是大概他想要得到的字符,不是的话就执行错误的操作,最后进行验证,需要注意是这里

我们可以尝试运算一遍,应该是s,最后得到 a2的值为dbappsec 。最后我们就要求的是a数组的值了(源程序是byte_416050数组,被我改了)

怎么求呢?IDA调试,有反调试没成功,试试OD,

先在ida中找到xor异或,查看他的地址(建议先图装查看,找起来方便,再查看地址)

我们现在就要看ecx的值了(XOR destination, source为什么不是eax,怪我汇编没学好,就是xor异或和实际异或的顺序相反的,我是这么记忆的)在**1B3E处下一个硬件断点,然后输入用户名,随便输入一个密码,循环8次记录下ecx的值。

0x2a, 0xd7, 0x92, 0xe9, 0x53, 0xe2, 0xc4, 0xcd

最后就是写脚本解密了。

str="dbappsec"
flag=""
a=[0x2a, 0xd7, 0x92, 0xe9, 0x53, 0xe2, 0xc4, 0xcd]
for i in range(8):flag+=hex(a[i]^ord(str[i]))
print(flag.replace('0x',''),end='')

最后输出为4eb5f3992391a1ae,md5加密之后的答案为

flag{d2be2981b84f2a905669995873d6a36c}

BUUCTF crackMe相关推荐

  1. BUUCTF reverse题解汇总

    本文是BUUCTF平台reverse题解的汇总 题解均来自本人博客 目录 Page1 Page2 Page3 Page4 Page1 easyre reverse1 reverse2 内涵的软件 新年 ...

  2. 某CrackMe算法分析

    平时看了一些CrackMe,算法都比较简单,这次拿到的这个算法自己觉得还是比较有难度,首先自己分析时并没有完全分析出算法的结论,后来参照答案才得到较完整的分析: 1.OD载入,F9运行,输入序列号,点 ...

  3. crackme算法分析---CRC32算法的妙用

    loveasm的crackme算法分析-----CRC32算法的妙用 [作者]:onlyu[FCG][DFCG] [软件介绍]:loveasm[YCG][DFCG]兄弟的crackme,主要锻炼算法分 ...

  4. BUUCTF的Web真题学习整理(一)

    目录 WEB1-WarmUp (任意文件包含漏洞) WEB2-高明的黑客(fuzz脚本) WEB3-easy_tornado (服务端模板注入(ssti攻击)) WEB4-Hack World(时间盲 ...

  5. Crackme006 - 全新160个CrackMe学习系列(图文|视频|注册机源码)

    知乎:逆向驿站 原文链接 CrackMe006 | 难度适中适合练手 |160个CrackMe深度解析(图文+视频+注册机源码) crackme006,依然是delphi的,而且没壳子,条线比较清晰, ...

  6. 逆向工程核心原理学习笔记(十三):分析abex' crackme #1 的延伸:将参数压入栈

    还是上一次的abex' crackme #1,我们用OD附加看一下. 我们发现在调用这个MessageBox函数的时候,用了4个PUSH指令,我们在后面的注释中可以清楚的看到压入参数的内容. 如果我们 ...

  7. IDA Pro逆向实战之Crackme(简单篇)

    IDA Pro逆向实战之Crackme(简单篇) 今天手闲的很,没事就拿出了以前没解决的逆向题来做一下,具体的源程序在附件里,废话少说,直接上菜: 0.   源程序运行效果(输入不对的,直接退出): ...

  8. 记对一个key file crackme的破解

    crackme下载地址: http://kssd.pediy.com/tutorial/exercise/section04/chap6-1-4-03.zip -------------------- ...

  9. nsa构架_我如何使用NSA的Ghidra解决了一个简单的CrackMe挑战

    nsa构架 by Denis Nuțiu 丹尼斯·努尤(Denis Nuțiu) 我如何使用NSA的Ghidra解决了一个简单的CrackMe挑战 (How I solved a simple Cra ...

最新文章

  1. 华为等向联合国提议重构互联网:提议采用一种新的核心网络技术新标准,名为“New IP”...
  2. zabbix添加URL监控
  3. mysql seq 重置_需要在Oracle中重置序列的值
  4. kaggle 房价预测经典文章
  5. Windows 10使用PowerShell创建系统还原点的技巧
  6. 弗吉尼亚理工计算机科学排名,2020年弗吉尼亚理工大学排名TFE Times美国最佳计算机科学硕士专业排名第45...
  7. hrtimer的简单使用 + 原理和实现【转】
  8. 让Netty“榨干”你的CPU
  9. 【QT 数据库专辑】【02】WIN7下搭建本地MYSQL数据库02 - 建立数据库的驱动程序-QT为例-完备版
  10. 如何计算近似纳什均衡_通证经济系列之纳什均衡
  11. php 微信扫码给红包,关于现金红包的详细介绍
  12. linux系统可以玩星际争霸吧,在Linux下可用Wine安装和运行星际争霸2、水煮三国
  13. Linux内存管理 -- /proc/{pid}/smaps讲解
  14. tailf、tail -f、tail -F三者区别
  15. 大学英语综合教程四 Unit 2 课文内容英译中 中英翻译
  16. HTTP解析库http-parser简介及使用
  17. Linux基础 linux账号及权限管理
  18. 去哪儿网首页-周末游组件开发(6)
  19. javascript设计模式-单例模式(singleton pattern)
  20. python学习笔记9.2-文件及文件夹操作

热门文章

  1. php跳转传值,php如何跳转页面并传值?
  2. mysql有两个结果集,MySQL:两个结果集的差异
  3. 无处不在的智能设备与边缘计算时代即将来临
  4. 民生银行马坡数据中心基础设施Uptime Mamp;O运营管理体系建立与实施
  5. 万物互联时代的边缘计算
  6. 智能电源分配PDU应用
  7. Py之huaweicloud-sdk-python:huaweicloud-sdk-python的简介、安装、使用方法之详细攻略
  8. Graphviz之DT:手把手教你使用可视化工具Graphviz将dot文件转为结构图的png文件
  9. DL之LeNet-5:LeNet-5算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
  10. Py之seaborn:seaborn库的简介、安装、使用方法之详细攻略