【Reversing.kr】HateIntel
本帖最后由 whklhh 于 2017-10-11 22:33 编辑Reversing.kr是韩国的一个逆向题目网站
有分国度的排行榜,还是挺有意思的
本题即来自于第十六关HateIntel
http://reversing.kr/challenge.php可以下载到文件
HateIntel
这个标题真刺激……
看起来是mac平台的,只能直接IDA反编译啦╮(╯_╰)╭
ARM平台的反汇编没有接触过,直接F5
IDA大法好(°∀°)ノ
从start函数向后找,在这里发现了关键部分
http://img.blog.csdn.net/20171011220135812?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2hrbGhoaGg=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast
很明显,接收输入后通过sub_232c进行处理,然后循环比较input和byte_3004
这里input玩了一个小花招,vars0取地址-0x5c
实际上就是Input的地址,刚开始还没反应过来vars0是啥
那么关键就在于sub_232c里做啥了呢?
http://img.blog.csdn.net/20171011221221621?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2hrbGhoaGg=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast
逐字符循环,每人四次……
又调用了一个函数sub_2494来处理字符,藏得真深啊
http://img.blog.csdn.net/20171011221444635?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2hrbGhoaGg=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast
这个函数的a2参数给的一直都是1,所以函数内的循环并没有得到使用……
循环体先*2,再根据bin第9位来对bin第一位赋值
嗯?这个操作有点眼熟啊
不就是rol(v3, 1)吗
先左移一位,然后将溢出第一比特的位(第9位)的值赋给第一位
也就是循环左移操作呀,那么我们根据目标值进行循环右移4位不就行了么
目标值复制,IDC dump出来都可以
脚本:
n =
for i in n:
for j in range(4):
p = i & 1
i = (i >> 1) + p*(0x100>>1)
print(chr(i),end='')
Do_u_like_ARM_instructi0n?:)
No, I don’t.(╯‵□′)╯︵┻━┻ 学习下。。。。。 以后研究一下 涨姿势了!!!! 这个网站的作者很nb的,一个大学教授,还写了一本逆向书 smile1110 发表于 2017-10-13 08:23
这个网站的作者很nb的,一个大学教授,还写了一本逆向书
啊 是李承远《逆向工程核心原理》吗?
页:
[1]