攻防世界 手工脱壳拖入之后是北斗壳nspack然后将程序拖入x32.dbgF9进入断点pushfd这是ep程序入口F8步入pushad右侧在esp右键在内存窗口中转存在左下角栈顶esp下断点硬件断点访问32位所以是D按一下F9运行当我们执行f9执行程序到断点位置的时候就会来到popfd这个位置再按F9在发现jmp有大跳转的时候按F7跟进直到找到oep原始程序入口然后点击插件scylladump修复紧接着修复IATget importsfix dump得到拖入idashiftfn12点进去ctrlx查看引用找到main函数F5反编译逻辑是用户输入的第 v1 个字符ASCII 码与byte_402130进行异或然后与数组dword_402150进行比较所以dword_402150是我们加密后的数据v2 % 16说明key的长度是16V1是我们输入的字符串双击byte_402130进入再右键进入hexthis_is_not_flag刚好是16位我们输入一个长度位42的字符串然后让key叠加然后与输入的字符串异或得到加密后的数据也就是dword_402150将它转换成数组大小为42位shifte导出flagathis_is_not_flagb[0x12,4,8,0x14,0x24,0x5c,0x4a,0x3d,0x56,0x0a,0x10,0x67,0,0x41,0,1,0x46,0x5a,0x44,0x42,0x6e,0x0c,0x44,0x72,0x0c,0x0d,0x40,0x3e,0x4b,0x5f,2,1,0x4c,0x5e,0x5b,0x17,0x6e,0x0c,0x16,0x68,0x5b,0x12,0x48,0x0e]for i in range(42):flagchr(ord(a[i%16])^b[i])print(flag)flag{59b8ed8f-af22-11e7-bb4a-3cf862d1ee75}