whklhh 发表于 2017-10-11 22:32

【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.(╯‵□′)╯︵┻━┻

Xw丶小威 发表于 2017-10-11 22:46

学习下。。。。。

乖乖黑娃娃 发表于 2017-10-12 06:30

以后研究一下

小_Ta 发表于 2017-10-12 21:35

涨姿势了!!!!

smile1110 发表于 2017-10-13 08:23

这个网站的作者很nb的,一个大学教授,还写了一本逆向书

whklhh 发表于 2017-10-13 11:59

smile1110 发表于 2017-10-13 08:23
这个网站的作者很nb的,一个大学教授,还写了一本逆向书

啊 是李承远《逆向工程核心原理》吗?

爱蜂玩爱疯玩 发表于 2017-11-21 16:33

页: [1]
查看完整版本: 【Reversing.kr】HateIntel