#总览
enc tea rc4 smc加密
easyenc int逐位转char
#题目enc
##解法
感觉还是挺难得一个题目
32位无壳 直接扔进ida
直接找关键字符串
首先注意到的是right,但是很奇怪没有函数引用,
先不急 先看下面的那个函数 进去
找到main函数了
看起来是一个很简单的程序
先来看前半部分
把我们输入的v11,分别给了v10和v7
然后有一个函数对v7进行操作
详细的操作如上图,很明显是一个tea,ok,退出来
下半部分有两个函数有看点的,第一个传入了一个v10,详细跟踪一下
到这里还没完,继续下去
一个加密方法。而上面是一个典型的smc局部加密代码,看看另外一个函数
ida报错了,点进去地址看看
显然就是被加密的部分了,不着急解密看看
这个解密代码之前有做过,拿来用吧。
变成现在这样,还没结束,先按c对他们重新分析一下
已经ok了,但是还没有承认这个函数,通过edit function create function来创建函数
f5
有了,是一个rc4。
关于详细的脚本我没写,看了官方的wp https://www.cnblogs.com/Tree-24/p/17346919.html#enc
flag NSSCTF{y0u_ar3_rc4_t3a_smc_m4ster!!}
#题目easyenc
##解法
感觉这题也是挺抽象的。
无壳64位,丢进ida
进入后直接反编译
看上去还是蛮简单的,来分析一下
一些赋值,框中内容是一个输入函数
v4这里是用一个do while然后对输入字符串的长度进行一个查询。
这里是关键了,v4应该是41,也就是输入的应该是41位
这两条是最抽象的。
实际上是逐位读v10,而v10是一个4个字节的int,这里操作实际上是取1个字节 等于是取一个字符。
然后这个字符和v8的一位比较,对的话就正确。
而v8就在上面。
所以逆向思路就是通过这个v8来拼。
我自己做的时候是手动的,极其麻烦,这里贴一下别的师傅的写法
https://blog.csdn.net/qq_46266259/article/details/128642972
flag