学逆向论坛

找回密码
立即注册

只需一步,快速开始

发新帖

2万

积分

41

好友

1168

主题
发表于 2019-7-13 12:08:35 | 查看: 6628| 回复: 0

相关题目:

♦ SimpleRev

1. 确定文件类型
直接IDA或IDA64打开,利用IDA检查文件类型为:elf x86 64位
235095d29585509894.png
1. 尝试运行
出现“Segmentation”错误,一般来讲运行不起来要么就是出题不严谨没考虑库兼容问题,要么有坑。比如这题:
536025d2958681ba96.png
1. patch使其正常运行
使用IDA64打开,Crtl+e定位到EP,可看到不正确不平衡的堆栈初始化:
811365d29587ceebb6.png
IDA已经识别出“sp-analysis failed”,问题出在“sub rsp,0”根据底部的堆栈平衡代码可确定其本来应该是“sub rsp,8”。使用16进制编辑器直接修改机器码为“48 83 EC 08”或使用IDA patch插件修改汇编语句:
864325d29588d97eb7.png
396205d29589636c38.png
再次运行尝试,OK

362235d29589dbbde7.png
1. 定位关键函数算法
IDA string窗口发现特殊的字串:
863745d2958be80ff3.png
可以很轻易的定位到关键算法函数:
841525d2958cbf3f53.png
1. 动静态结合破解算法
Gdb ./SimpleRev_m开启调试,因为其未删除程序符号可以直接“b main”下main断点,单步进入到Decry()函数后,使用“b *Decry-0x93a+0xbaa”直接下strcmp关键比较函数,c继续运行,输入“12345678”后验证其比较参数:
449245d2958dd6b7c0.png
继续输入“23456789”验证其第一个目标字串并未改变:
422055d2958ed5635d.png
Text字串固定为“killshadow”,str2的求取中,v3为字串指针,v2为flag输入,关键为key数组:
845885d2958fbe96dd.png
下key的两个引用断点“b *Decry-0x93a+0xb22” “b *Decry-0x93a+0xab7”,可得到固定的key数组“adsfkndcls”:
230105d29590b8cda2.png
所以可以确定加密算法为:
(X-0x27-key[‘adsfkndcls’])%26=str2[‘killshadow’]

1. 编写枚举脚本
确定flag区间:
一.‘A’~‘Z’
二.0x00~0x26、0x7B~0x7F
Python脚本运行得到flag为:“KLDQCUDFZO”
365665d29591e810e6.png

230755d29592a730e7.png

182005d29593244845.png

温馨提示:
1.如果您喜欢这篇帖子,请给作者点赞评分,点赞会增加帖子的热度,评分会给作者加学币。(评分不会扣掉您的积分,系统每天都会重置您的评分额度)。
2.回复帖子不仅是对作者的认可,还可以获得学币奖励,请尊重他人的劳动成果,拒绝做伸手党!
3.发广告、灌水回复等违规行为一经发现直接禁言,如果本帖内容涉嫌违规,请点击论坛底部的举报反馈按钮,也可以在【投诉建议】板块发帖举报。
论坛交流群:672619046

小黑屋|手机版|站务邮箱|学逆向论坛 ( 粤ICP备2021023307号 )|网站地图

GMT+8, 2024-11-22 04:48 , Processed in 0.121334 second(s), 41 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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