逆向分析之花

窝是标题党
其实就是HOOK
HOOK的话据我目前了解的就是能够修改
比如运行到一半去运行你自己的函数
他可以来修改返回值什么的

来看个题吧

easyhook

题目
首先拖进ida里看下函数整体逻辑
1
正常人都会去看下那个sub_401240
进去看看
2
仔细看的话就可以看到问题所在了
很明显有问题
令返回值为1必须result==21
但是之前就有个长度验证
长度为19
所以说根本不可能对第二个参数进行修改
那怎么对其修改呢
看他上面一个函数
也把NumberOfBytesWritten传进去了
调试看看
可以看到hook的明显标志
就是jmp
3
过去就能看到真正的加密了
4
加密完后有个比较操作
5
不怎么难

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# aac]eYg]iQk]mYo]qAr
b = [0x61, 0x6A, 0x79, 0x67, 0x6B, 0x46, 0x6D, 0x2E, 0x7F, 0x5F,
0x7E, 0x2D, 0x53, 0x56, 0x7B, 0x38, 0x6D, 0x4C, 0x6E]
flag = ''
for i in range(19):
if i == 0:
flag += 'f'
continue
if i == 18:
flag += chr(b[i]^0x13)
continue
else:
if i%2:
flag += chr((b[i]^i)+i)
continue
else:
flag += chr(b[i-2]^(i-2))
continue
print flag
#flag{Ho0k_w1th_Fun}

此题目唯一一个bug就是
对第一个输入的字母没有限制
所以第一个可以瞎填
但是提交的时候就不一样了。。。
但也不难看出
第一个就是f

文章目录
  1. 1. easyhook
|