从 CNSS 偷来的 SMC
最早接触SMC(Self Modify Code)
这个词语是在看《加密与解密》的时候看的。我印象中碰到的第一个SMC
的题目是第二届全国中学生网络安全竞赛线上赛的一个maze
题,它smc
的内容是地图……那个题目比较简单,导致我认为smc
很简单……然后我在今年的SWUPCTF
里面被很很打脸,第一个smc
直接不会。
这个题的smc
感觉还是比较简单的(bushi
,但是我一开始没做出来是因为我被swup
的那个题目给影响了,直接全局找vm
函数,在函数表里面没有找到,又往main函数前面手动查找,但是也没有找到,就不会了……直到前两天碰见rx
神,谈到这个题,他说:垃圾bb
,你知道什么是NX
(堆栈不可执行)保护么????我留着屈辱的泪水,终于明白了。这个题的text有修改权限,不需要vm
函数来修改权限。那么我在main
函数里面找了找,终于找到了smc
函数:
在main
函数里面可以看到三个参数,写一下ida_python
脚本(嫖RX
的:
from ida_bytes import *
for i in range(0x138):
patch_byte(0x408b06+i, get_byte(0x408b06+i)^74)
好了,知道了……maze
题,扣迷宫,手动走:
ByteCTF 2020 AWD TikTokAdmin 简单花指令
这个题只是要求去花嘛~~,那直接在问题窗口里面找花就好了:
两处花指令都是十分简单的那种
je loc_8125+1
jnz loc_8125+1
je loc_81f2+1
jnz loc_81f2+1
直接patch
一下,然后p一下就好了。
attachment
上周的第三题那个C艹艹
逆向,思路很简单,但是那么多dll
,反汇编哪一个???而且怎们知道是
这个事件里面……
思路很简单,把“DD01903921EA24941C26A48F2CEC24E0BB0E8CC7
”SHA1
解密:1001
,再md5
加密:“b8c37e33defde51cf91e1e03e51657da
”,然后再跟进md5
那个加密函数:
好家伙,取20位……
BJDCTF{b8c37e33defde51cf91e}
但还是最前面的两个问题很难受……不太懂
PS:
那两个问题RX解答了,他的专业回复是这样的:看这里:Unity - Manual: Assembly definitions (unity3d.com)