题目地址:https://buuoj.cn/challenges#%E6%96%B0%E5%B9%B4%E5%BF%AB%E4%B9%90

用IDA打开文件:

怎么可能才两个函数,猜测加了壳,直接查:

1、将文件拖进exeinfope(或者PEiD)查壳:

发现是upx壳——》拖入kaliLinux脱壳:upx -d 文件名
unpack “upx.exe -d” from http://upx.sf.net or any UPX/Generic unpacker
32位文件
脱壳,网上找脱壳机,当然也可以手动脱壳


2、IDA分析
找到main函数,F5反编译

脱壳后,复制到Windows下,用ida打开(就不只是两个函数了)


查壳伪代码:

__main();strcpy(&v4, "HappyNewYear!");  // 这一行代码使v4=‘HappyNewYear!’v5 = 0;memset(&v6, 0, 0x1Eu);printf("please input the true flag:");scanf("%s", &v5);  if ( !strncmp((const char *)&v5, &v4, strlen(&v4)) )// 输入v5后,与v4比较,如果相同,则输出“this is true flag!”result = puts("this is true flag!");elseresult = puts("wrong!");return result;
}

所以flag为:flag{HappyNewYear!}

『软件加壳与脱壳』
  植物有壳,动物有壳,软件亦然。

常见的三种壳:压缩壳、保护壳、捆绑壳。

壳的用途:(1)保护版权信息-不让别人随便更改作者版权信息;(2)减小程序体积-方便存储、传输、使用;(3)黑客界给木马等软件加壳,主要为躲避杀毒软件。

常见的加壳工具:
  
常见的脱壳工具:

常用的侦壳工具:PEID、StudPE、PEscan、Exeinfo PE等

BUUCTF-Reverse:新年快乐 + 加壳与脱壳相关推荐

  1. .NET程序的代码混淆、加壳与脱壳

    通常我们通过代码混淆.加密的形式达到软件保护的目的.在Web开发里我们接触过的可能就是JS代码加密了,可以通过对JS代码进行混淆.加密从而实现对核心JS代码的保护.如果没有接触过的可以在这里简单了解一 ...

  2. Python pyc文件 bytecode的压缩, 加壳和脱壳解析

    我们常常看到, 自己用PyInstaller等库打包的exe被别人反编译.而源代码在exe文件中是以字节码形式存储的.掌握了字节码的加密技巧, 就可以防止源代码的反编译. 目录 1.字节码是什么 2. ...

  3. 软件的壳和壳的含义、概念以及加壳和脱壳方法

    软件的壳和壳的含义.概念以及加壳和脱壳方法 PE(Portable Executable) 也就是EXE和DL)文件所具有的起压缩.加密.保护作用的东西.可以用PEiD等软件查壳. 加壳通过修改程序入 ...

  4. 实验四:使用UPX加壳与脱壳

    一.实验目的 了解程序加壳.脱壳原理 掌握PE文件结构 学习利用UPX Shell.LoardPE.IDA等工具完成软件的加.脱壳操作 二.实验题目 UPX加壳:对crackme加上UPX壳,用 Lo ...

  5. 什么是加壳和脱壳技术?加壳和脱壳技术是什么意思?

    什么是加壳和脱壳技术?加壳和脱壳技术是什么意思? 加壳,是一种通过一系列数学运算,将可执行程序文件或动态链接库文件的编码进行改变(目前还有一些加壳软件可以压缩.加密驱动程序),以达到缩小文件体积或加密 ...

  6. Android 加壳与脱壳方式总结

    介绍 说到加壳,之前接触的主要都是pc端的壳,当时的脱壳就是用的esp脱壳法,大概意思就是程序运行到将当前环境保存之后,在当前的esp指向的地址下硬件断点,然后再次运行到该点时,进行dump内存,即可 ...

  7. 360 so加壳动态脱壳方法

    转载地址:http://mp.weixin.qq.com/s?__biz=MjM5NzAxMzk4NA==&mid=209300616&idx=1&sn=bcc440640f6 ...

  8. PE文件的简单加壳和脱壳(UPX和PEiD)

    先普及几个概念: PE文件:portable executable(可移植的可执行文件),主要在Windows系统中,包括exe/dll/sys文件. 加壳:是利用特殊的算法,对EXE.DLL文件里的 ...

  9. 恶意代码分析-第十八章-加壳与脱壳

    目录 笔记: 实验: Lab18-1 Lab18-2 Lab18-3 笔记: 壳的功能:缩减程序的大小,阻碍对加壳程序的探测和分析 解析函数导入表:1.仅导入LoadLibrary和GetProces ...

最新文章

  1. 光盘压制:八种加密方法保护光盘数据安全
  2. java 二叉堆_二叉堆(三)之 Java的实现
  3. netty5.0通过LineBasedFrameDecoder和StringDecoder解决粘包
  4. VueI18n的应用
  5. STM32 SPI详解
  6. 谷歌推出 GKE 开源依赖关系漏洞奖励计划
  7. 2021-08-01
  8. Ubuntu 18.04 Server必须使用netplan命令配置IP地址
  9. Androidpn里的XmppManager的理解
  10. 怪物猎人online 日服 注册流程(原创)
  11. 免费学plc的手机app_PLC学吧APP
  12. Python搭建聊天机器人微信订阅号
  13. Adobe PhotoShop(PS) for Mac 快捷键/PS快捷键
  14. VUE2.X全教程--基础详解(二)
  15. linux之服务管理
  16. 树莓派存储方案_树莓派搭建seafile存储重要文件
  17. Flak 自定义URL转换器
  18. IC中LDO电路的DRC验证问题
  19. Java入门 技术总结
  20. 参禅静坐--虚极静笃--快速恢复脑力体力

热门文章

  1. 经典算法——KMP模式匹配
  2. 使用Docker搭建Elasticsearch6.8.6集群及设置集群用户密码
  3. JAVA 设计的七大原则
  4. python--微信小程序获取手机号码报错
  5. 【旧文章搬运】Windows中全局钩子DLL的加载过程
  6. sqlserver、oracle数据库排序空值null问题解决办法
  7. 中缀表达式生成二叉树
  8. 微软的最高市值是多少?
  9. 【数据结构】顺序线性表的构造和存储数据
  10. Oracle 执行计划 提示 'PLAN_TABLE' is old version 解决方法