查看: 693|回复: 2

[Reverse] EazyRe解题writeup

[复制链接]
发表于 2019-5-21 17:14:50 | 显示全部楼层 |阅读模式
拿到程序,首先查壳,进行黑盒测试,测试部分我这里跳过,可以看到是UPX压缩壳
846195ce3ab5ef1300.png
由于程序加壳,PEID无法侦测到程序所用的编译器等信息,这里只能手动进行PE文件分析,可以看到Magic码为10B,说明这是个32位的程序(64位是20B)可以用OD来分析,压缩壳会动态的向区段解密数据,IDA是无法静态分析到这些未解密的数据,后面再说IDA的问题

941525ce3aadb5377b.png
OD载入后可以看到是典型的UPXEP,单步F8,可以看到ESP(栈顶指针)发生了变化,这里就可以用ESP定律来脱掉这个壳(ESP定律的原理是利用堆栈平衡来定位大跳转)
281405ce3af4141039.png



脱壳不是重点,这里就不演示具体的脱壳过程(不会百度ESP定律吧)

42185ce3b186aac7b.png
此处经过2次大跳转,来到标准的C++程序的OEP,如果逆向经验比较丰富,这里应该能看的出来
921965ce3b216d14e2.png
到达OEP之后,就可以正式开始逆向分析了
71715ce3b2eaf1ef1.png
如果想用IDA进行分析,这时候直接把解码后的内存区段dump下来,然后用REC清理一下IAT的垃圾,重建一下IAT数据表(把IT指针改了,否则无法定位IAT),但是这个程序好像有内存保护,这里应该算是一个反调试吧,无法直接读取调试内存,所以REC不好使,用下面这个工具可以dump下来代码段和数据段,用IDA直接分析这2个区段就行。
571095ce3b496bf3dc.png
搜索字符串,找到获取输入的关键点

49265ce3b63c43fa9.png
由于题目已经告诉我们密钥是16位的,所以我就不演示踩坑的过程,直接输入16位的假码
957995ce3b7067424c.png
继续跟踪,找到加密算法所在的函数(这里是我分析得出)

49645ce3b6ab54904.png
F7跟进去,看到这个程序的加密算法,过程看图即可

832525ce3b8ab13fff.png
加密细节
375985ce3b93a1df76.png
这里可以推出数组是int类型的,每个元素占4个字节,分别为4 1 2 0 1 2 2 5 1
还原出C++代码应该是int a[9]={4,1,2,0,1,2,2,5,1}

716595ce3bb3fc523f.png
这里面的算法就是把我们输入的每一位分别和刚才的数组对应的元素进行异或,然后加1

288845ce3bb37b49de.png
首先是xASCII对应的十六进制784进行异或得到7C,然后再加1得到7D

373285ce3bc000190f.png
变换之后的7D替换第一个字符x
347475ce3bcf5e7c8e.png
后面每一轮都是这样,循环加密,然后替换,值得注意的是,这里不是用了每一个数组元素,它会以5次为一个循环,也就是说,int a[9]={4,1,2,0,1,2,2,5,1}他只会循环4,1,2,0,1,用这5个数对字符串进行循环异或加1,然后替换
409265ce3bd5f8134d.png
继续向下分析,找到程序最后会用我们加密之后的字符串和真码序列号4a88a2a653=97b2b 进行比较,判断的结果写到al中,al=1两个字符串匹配,al=0两个字符串不匹配
909675ce3be67a2faf.png
决定提示正确与否

612745ce3bf1a4a1b0.png
整个程序到这里就分析完成,接下来开始逆推解密过程
我们已知最后对比的真码为4a88a2a653=97b2b ,程序正常运行会把输入进行异或然后加1,这里我们就把真码进行逆推变换,先减1,再异或
963775ce3c03d23a0b.png
最后得出的7a57a5a743894a0e 输入到程序里进行验证,程序会把输入的7a57a5a743894a0e进行异或然后加1,变成4a88a2a653=97b2b,最后再和4a88a2a653=97b2b比较,这样肯定是正确的。
61305ce3c13536bfd.png
这就是EazyRe的完整解题过程,这是一道很简单的逆向题,相比于看雪CTF的题简直不值一提,这篇wp我写了3个多小时,非常详细,希望对刚入门逆向的朋友有所帮助吧。
题目和分析过程以及所用工具打包如下:

题目和分析过程以及所用工具.zip (4.07 MB, 下载次数: 3)
温馨提示:
1.如果您喜欢这篇帖子,请给作者点赞评分,点赞会增加帖子的热度,评分会给作者加学币。(评分不会扣掉您的积分,系统每天都会重置您的评分额度)。
2.回复帖子不仅是对作者的最好奖励,还可以获得学币奖励,请尊重作者的劳动成果,拒绝做伸手党!
3.发广告、灌水回复等违规行为一经发现直接禁言,如果本帖内容涉嫌违规,请点击论坛底部的举报反馈按钮,也可以在【投诉建议】板块发帖举报。
善莫大焉-2019

0

主题

26

帖子

0

精华

初级会员

Rank: 4

学币
17
荣耀
0
rank
0
违规
0

    发表于 2019-6-1 00:47:18 | 显示全部楼层
    回复 打印

    使用道具 举报

     楼主| 发表于 2019-6-1 19:10:29 来自手机 | 显示全部楼层
    大麦煮小米 发表于 2019-6-1 00:47

    嘿嘿
    关闭

    论坛公告上一条 /1 下一条

    快速回复 返回顶部 返回列表