逆向工程 cm1 wp

附上下载链接cm1


这好像是一个linux小程序emm
话说Linux小程序怎么用…拖到虚拟机里么???【求教
没什么思路 先拖到IDA里再说(简单粗暴
这里写图片描述
F5找伪代码
这里写图片描述
看到if else语句 觉得此处定有蹊跷hhhhh
ヾ(◍°∇°◍)ノ゙
先去judge_func(v5)瞅了一眼 大概就是判断输入的是不是正确的
这里写图片描述
然后又去其中的check_func看了一下
里面有一个长度==22
这里写图片描述
那么最核心的就应该是v5这句了
我们去v5=decodel(&s,v6)这里看看
这里写图片描述
OLL转成字符型就是’\0’
感觉for循环里应该就是挺重要的东西惹
compare 比较 emmm应该就是对比答案的
我们去compare看一下
这里写图片描述

吼的 又到了写算法的环节!! (•’ ‘• ۶)۶
这里写图片描述

ord() 返回其十进制的整数
end=”” 在结束的时候不会自动换行 而是在结尾添加一个空的字符串(只适用于Python3) 保证输出的连续
chr() 把十进制的数转化成字符形式

遍历file中的每一个字符 由原代码中if语句的 i ^ (char )(i + a1)) != compare[i]
因为之前我们看到==22后会输出congratulations 而compare正好是22位
decode1函数最后返回的是v3
v3要去和22比长度 但一开始v3=0 若想要v3加到22 就要是if中的不满足 也就是让!=理解为==
这样才能++v3
于是写算法的时候就要使每一位和它相等 就是要把数字变成字符型 与compare中的比较
通过前面的各个函数 可以看出if中的i+a1
a1就是我们输入的flag
a2就是flag的长度
emmm 我的理解吧 按照这样理解的话应该就很容易写出脚本了(思路混乱ing
…(。•ˇ‸ˇ•。) …

猜你喜欢

转载自blog.csdn.net/Retrovich/article/details/82623596
wp1