前言

攻防世界逆向刷题,此题主要学习ESP定律法脱壳,一开始脱壳后程序有点问题,无法运行,不知道是不是后续哪些步骤没有完成,但是不影响反汇编,代码逻辑也没那么复杂,所以不影响做题,看了别人的WP都是动态调试出的结果,问题出在了脱壳时我没有勾选掉重新输入表,虽然不知道为什么。

一、题目分析

查壳发现不知名壳,IDA载入程序什么也看不到,没办法用我的万能脱壳工具,这里学习使用ESP定律法进行手动脱壳。
OD载入程序,f8一次:
在esp寄存器这里右键设置硬件断点,然后f9运行,程序会被断在刚才下的断点的位置:
然后在这个位置利用ollydump插件脱壳,保存:
IDA重新载入程序:
看到main()函数,整体函数的逻辑是很简单的,三个函数都是异或操作,而且与输入无关,唯一比较难理解的就是
这里看了别人的WP,了解到这里是在获取输入,相当于实现了getc,直接写脚本或者动态都可以出结果:
动调的话在调用最后一个拼接函数前下断点,栈里面可以看到:
写脚本的话下面给出示例

二、代码示例

key1 = [0x66,0x6D,0x63,0x64,0x7F,0x37,0x35,0x30,0x30,0x6B,0x3A,0x3C,0x3B,0x20]
v8 = []
for i in range(len(key1)):tmp = i ^ key1[i]v8.append(tmp)
flag1 = ''.join(map(chr,v8))key2 =[0x37,0x6F,0x38,0x62,0x36,0x7C,0x37,0x33,0x34,0x76,0x33,0x62,0x64,0x7A]
src = []
src.append(key2[0])
for k in range(1,len(key2)):tmp = key1[k] ^ key2[k] ^ key1[k-1]src.append(tmp)flag2 = ''.join(map(chr,src))key3 = [0x1A,0x00,0x00,0x51,0x05,0x11,0x54,0x56,0x55,0x59,0x1D,0x09,0x5D,0x12]source = []
for x in range(13):v6 = key3[x+1] ^ src[x] ^ xsource.append(v6)flag3 = ''.join(map(chr, source))flag4 = chr(key2[0] ^ key3[0])flag_final = flag1 + flag2 + flag4 + flag3
print(flag_final)
#flag{2378b077-7d6e-4564-bdca-7eec8eede9a2}

总结

本题主要学些ESP定理手动脱壳,方法也比较简单,但是对于更复杂的壳手动脱壳,单步跟踪法还没有学习,貌似相对复杂,遇到具体题目再具体学习吧。

【攻防世界逆向 BabyXor】相关推荐

  1. 攻防世界逆向高手题之reverse-for-the-holy-grail-350

    攻防世界逆向高手题之reverse-for-the-holy-grail-350 继续开启全栈梦想之逆向之旅~ 这题是攻防世界逆向高手题的reverse-for-the-holy-grail-350 ...

  2. 攻防世界逆向入门题之open-source

    攻防世界逆向入门题之open-source 继续开启全栈梦想之逆向之旅~ 这题是攻防世界逆向入门题的open-source 下载附件得到源码: #include <stdio.h> #in ...

  3. 攻防世界逆向高手题之dmd-50

    攻防世界逆向高手题之dmd-50 继续开启全栈梦想之逆向之旅~ 这题是攻防世界逆向高手题的dmd-50 下载附件,照例扔入exeinfope中查看信息: 64位ELF文件,无壳,照例扔入IDA64位中 ...

  4. 攻防世界逆向入门题之流浪者

    攻防世界逆向入门题之流浪者 继续开启全栈梦想之逆向之旅~ 这题是攻防世界逆向入门题的流浪者 下载附件,照例扔入exeinfope中查看信息: 32位PE文件无壳,照例扔入ida32中查看伪代码: 是没 ...

  5. 攻防世界逆向高手题之re2-cpp-is-awesome

    攻防世界逆向高手题之re2-cpp-is-awesome 继续开启全栈梦想之逆向之旅~ 这题是攻防世界逆向高手题的re2-cpp-is-awesome 下载附件,照例扔入exeinfope中查看信息: ...

  6. 攻防世界逆向入门题之no-strings-attached

    攻防世界逆向入门题之no-strings-attached 继续开启全栈梦想之逆向之旅~ 这题是攻防世界逆向入门题的no-strings-attached 下载附件: 扔入Exepeinfo中查壳和其 ...

  7. 攻防世界逆向高手题之re5-packed-movement

    攻防世界逆向高手题之re5-packed-movement 继续开启全栈梦想之逆向之旅~ 这题是攻防世界逆向高手题的re5-packed-movement 下载附件,照例扔入exeinfope中查看信 ...

  8. 攻防世界逆向高手题之Guess-the-Number

    攻防世界逆向高手题之Guess-the-Number 继续开启全栈梦想之逆向之旅~ 这题是攻防世界逆向高手题的Guess-the-Number 下载了一个jar文件,根据题目描述猜个数字然后找到fla ...

  9. 攻防世界逆向高手题的key

    攻防世界逆向高手题之key 继续开启全栈梦想之逆向之旅~ 这题是攻防世界逆向高手题的key . . (这里积累第一个经验) 这道题,嗯~搞了好久,主要是我的IDA是7.5版本的,其他博客上的大多都是7 ...

最新文章

  1. 请输入课程编号C语言,C语言 学生选课系统 程序
  2. python爬虫实例-Python爬虫原理与python爬虫实例大全
  3. 第二章 向量(d5)有序向量:插值查找
  4. 正则表达式(2.实例)
  5. 成幻Online Judge 1.00 Beta 正式发布 2007.6.22
  6. Qt中的QMainWindow
  7. 自然语言处理技术(NLP)在推荐系统中的应用 原2017.06.29人工智能头条 作者: 张相於,58集团算法架构师,转转搜索推荐部负责人,负责搜索、推荐以及算法相关工作。多年来主要从事推荐系统以及机
  8. 武汉大学计算机学院2019考研复试,2019年武汉大学硕士研究生复试及录取名单汇总...
  9. 右键新建里面没有word和excel_Excel中为什么修改了新建工作簿的选项,新建以后还是没有生效...
  10. Python+OpenCV:图像轮廓
  11. 双线性函数matlab,双线性插值(Matlab实现)
  12. qq说说时间轴php实现,qq空间时间轴PHP实现时间轴函数代码
  13. 清华大学计算机系学术委员会,清华大学学术委员会召开2018年度全体会议
  14. 对校招生培养工作的建议_贵单位对我校学生培养工作有何建议
  15. php取余函数,php 取余数详解
  16. U-boot中控制台命令
  17. java.lang.IllegalArgumentException: An operation with name [{X}count] already exists in this service
  18. 黑底白字html代码,如何用chrome扩展将网页变成黑底白字,用以保护视力
  19. C++练习11: 栈 和队列
  20. 天下所有的事,都是为了利益,都是按利益逻辑规律在运行,发生的一切事情都可以用利益逻辑来解释。

热门文章

  1. C语言--gets()、gets_s()、fget()的比较
  2. 个体工商户核名查询_如何查询营业执照核名
  3. 如何制作弹弓 - T爸写给小T的书
  4. ps写实计算机图标,PS教你如何绘制一个写实USB图标
  5. BT8:ActionNode及同步、异步
  6. 如何让计算机断开网络连接网络设置,拨号网络怎么设置连接和断开
  7. Android studio中将gbk转换为utf-8编码
  8. 认真写博客第一篇:java基于spring jersey mybatis 构建restful
  9. 如何安装MockingBird-AI拟声: 5秒内克隆您的声音并生成任意语音内容
  10. easypoi导出设置单元格填充颜色