Jarvis OJ - 软件密码破解-1 -Writeup
转载请标明出处http://www.cnblogs.com/WangAoBo/p/7243801.html
记录这道题主要是想记录一下动态调试的过程
题目:
分析:
刚开始拿到这道题目还是想用IDA静态分析,但无奈函数太多找不到关键函数,看别人Writeup也只是说关键函数为sub_401BB0但不知道怎么找到的,欢迎知道的表哥留言告知。
于是尝试拿OD动态调试,用OD打开,中文搜索引擎 -> 搜索UNICODE,可以在搜索到的字符串中找到你赢了
双击定位到对应汇编
向上翻,不远处就能看到关键判断和跳转
因此推测再向上边几行为关键代码,下断点动态调试逐句分析可得:
整个逻辑即为:
将输入与CTF100.005777F8亦或,再把亦或后的结果与给定的值进行比较
在mov ecx, CTF100.005777FB上右键 -> 数据窗口中跟随 -> 立即数即可看到CTF100.005777F8的值
因此可得到如下解题脚本:
1 l1 = [0x28, 0x57, 0x64, 0x6B, 0x93, 0x8F, 0x65, 0x51, 0xE3, 0x53, 0xE4, 0x4E, 0x1A, 0xFF] 2 l2 = [0x1B, 0x1C, 0x17, 0x46, 0xF4, 0xFD, 0x20, 0x30, 0xB7, 0x0C, 0x8E, 0x7E, 0x78, 0xDE] 3 4 ans = '' 5 for i, j in zip(l1, l2): 6 ans += chr(i ^ j) 7 8 print ans
运行得到flag
于是flag即为3Ks-grEaT_j0b!