[SWPU2019]EasiestRe
根据运行时的输出找到主函数,发现是个双进程保护
1 | char sub_B08A40() |
发现一个反调试,查看汇编发现有一个int3指令
INT3指令是专门用来支持调试的一条指令,它对应的机器码是0xCC。当cpu执行到这条指令是会产生异常并调用相应的异常处理程序(3号中断)进行进一步的处理。
1 | if ( NumberOfBytesRead[0] ) |
分析这一段代码,根据i的值进入不同的分支,而i的取值决定于buff[i]是否等于144,即0x90,对应着nop指令,所以i就是记录nop指令的个数+1(int3),继续分析知道了v16就是用于修改这里int3和后面六个nop的,直接patch,得到新的函数
使用idapython来修改比较方便
1 | a = [0x90, 0x83, 0x7D, 0xF8, 0x18, 0x7D, 0x11] |
1 | char sub_B08A40() |
然后就得到了加密的函数,是个背包加密
脚本解密即可
1 | iv=0x1234 |
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 3049155267@qq.com