攻防世界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即可看到解密后的函数
