西湖论剑
@TOC
ror
我第一个想到的办法是z3 然后看见下标了,就没有用 ,去手算,
事实证明,我脑袋不对
1 | from z3 import* |
TacticalArmed.exe
回调函数里有反调试 int 2d
正常情况会抛出异常,执行异常代码,调试器附加后,则跳过
异常代码赋给了四个参数,暂时不知道有什么用
在主函数里一共两个重要函数
sub_4011f0 执行smc解码函数
v21 执行程序的加密函数
通过od调试,把一轮的v21指令都给找出来
1 | 8B 0D 00 00 00 00 mov ecx, large ds:0 |
魔改的tea
key就是之前说的那四个参数
sum值和delta魔改了
改写脚本即可(只是第一轮的脚本)
1 | void decrypt (unsigned int* v,unsigned int* k) { |
gghdl
异或0x9c
如果看着代码多,而没有尝试去做一下,那么真是太可惜了
虚假的粉丝
结合动态调试,理清大概逻辑
第一个输入Y
然后输入三个key
第一个是文件的名字
第二个是文件的偏移
第三个是匹配字符串的大小
输入正确后会进行下一个环节的匹配
需要遍历所有文本文件,这里用别的师傅的一个脚本
1 | import os.path |
跑出来的偏移有点差距 加上8就行
base解码后刚好符合下一个输入,后面就是不停的对ASCII-faded 5315.txt进行处理
坐等处理完即可拿到flag
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 yaoxixixi's blog!