目录
easyre
reverse1
reverse2
内涵的软件
新年快乐_脱壳
xor
helloword_安卓
reverse3_base64
觉得这篇文章不错的话就收藏、点赞、评论、关注我吧~
相关推荐:
9-16题详解博客 看这里→ BUUCTF逆向9-16题wp
逆向工具下载 点这里→ 爱盘 - 在线破解工具包
逆向入门博客 看这里→ 逆向入门规划
使用exeinfo工具查看文件信息
使用IDA 64位打开文件,再使用Shift+F12打开字符串窗口,发现flag字符串
双击跳转到字符串在汇编代码中的存储地址
点击字符串下方注释中的跳转链接,即可跳转至引用它的函数对应的汇编代码处
按F5反汇编,生成对应汇编代码处的C语言伪代码
分析代码。直接观察可知flag为代码中所示字符串
根据字符串值,找到主函数位置
分析代码
由代码①得:用户需要输入字符串Str1,如果与Str2比较相同,则会提示flag正确。说明Str2中存储的字符串就是flag。点击代码中Str2,跳转至对应存储内容。
代码②上方代码不影响字符判断,所以可不用分析。
由代码②得:在for循序中遍历字符串Str2,(按R键,将数值转换为对应的ASCII码字符)
并将字符串中的“o”替换“0”。即 将Str2原字符串值中的“o”替换“0”即为flag值。
与上一题相同。分析代码得将字符串中的“i”“r”替换成“1”即为flag值。
查看字符串列表,直接找到。把最外层换成flag{}即可
使用IDA打开文件反编译后只有两个函数,且不能修改,应该是加壳了
使用exeinfo工具查壳,发现有UPX壳
打开Upx脱壳机,将待脱壳文件拖至脱壳机左侧图像处即可脱壳
生成脱壳后的exe文件,以及备份的bak文件
脱壳后,可查看源码。审计代码,flag即为第9行处字符串
查看字符串列表。找到主函数
分析源代码:输入__b的值,经过异或相关操作后,与global字符串相同,即flag匹配成功。由于两次异或运算等于本身,所以将global字符串再次经过相似的异或操作,即可得到flag。
global存储的即为flag的原始数据
选中此部分,按Shift+E即可获取该数据的指定类型格式源码
根据分析,编写脚本,获取flag
glo = [102, 10, 107, 12, 119, 38, 79, 46, 64, 17,
120, 13, 90, 59, 85, 17, 112, 25, 70, 31,
118, 34, 77, 35, 68, 14, 103, 6, 104, 15,
71, 50, 79]
flag = "f"
#将glo中的值进行异或处理。根据上文分析,此处应为逆序处理。
for i in range(len(glo)-1,0,-1):
glo[i] ^= glo[i-1]
#将b中数值转义成对应ASCII码字符
for i in range(len(b)):
a += chr(b[i])
print(a)
运行得到 flag{QianQiuWanDai_YiTongJiangHu}
使用Android Killer打开apk文件,在工程搜索中搜索“flag{”尝试查找flag字符串,找到flag
根据字符串猜测,函数内有base64编码转换
输入Str后进行,进行base64编码,最终赋值给Destination,然后在for循环内做字符处理,最终做出判断。
写脚本
from base64 import *
d = [ 101, 51, 110, 105, 102, 73, 72, 57, 98, 95, 67, 64, 110, 64, 100, 72]
a = ""
for i in range(len(d)): #
d[i] -= i
a += chr(d[i])
print(b64decode(a)) #
得到flag{i_l0ve_you}