萌新第一次在比赛里玩逆向…最后当然没做出来啦…

反调试

有5个反调试,直接nop掉就好

程序逻辑

  • 先是对用户输入的整数进行几个运算

总结一下就是input=input+3+0xCCCCCCCC

  • 之后没有判断对错,直接就jmp short loc_8048779跳到了wrong的分支

  • 看一下上方的两个call sub_8048691

    这里会将input指向的地址设为90h,也就是nop,执行两次则将两个字节设为nop

因此只需要让此时的input等于下方jmp short loc_8048779(正好2个字节)的地址,将其改成两个nop即可进入Right分支

也就是让input+3+0xCCCCCCCC=0x08048765

0xCCCCCCCC是-858993460的补码,因此可以算出flag=input=0x08048765+858993460-3=993507990