攻防世界Babyre
关键在于judge函数,judge函数无法正确反编译,显然是被加密了,main函数第8行即为加密过程
方法一:用ida python解密
已知judge函数的起始地址为0x600B00,且已知judge函数共182个字节,可以用ida python还原加密前的judge函数
运行如上脚本,发现数值发生了变化
然后按U(取消原来定义),再按 C(重新生成汇编代码),按P(重新生成 function)后即可f5反编译,得到加密前的judge函数
脚本如下
1 | v2_str = 'fmcd' |
运行既得flag
方法二:注意到main函数的第8行即为解密judge函数的过程,所以可以采用动态调试的方法求解judge函数
由于文件为elf文件,所以将ida的dbgsrv得linux_server64复制到linux虚拟机中,在ida种启动远程调试,断点下在12行即可
此时judge函数已解密,双击进入
同样执行U、C、P后按f5即可看到解密后的函数