BeneficialWeb 发表于 2018-8-27 13:17

一道简单的CTF逆向题(仅供小白参考,大牛勿喷)

本帖最后由 BeneficialWeb 于 2018-8-27 13:24 编辑

程序名字是反调试,可是我载入OD没遇到,直接搜索字符串来到这里。(如果遇到了,欢迎留言告知是使用了什么反调试原理,谢谢各位哒)


重新输入0x2A长度的字符串
可以看到这里就是验证了

剩下的就很简单了,找到表里的东西,复制下来,写个程序跑一下
得到Flag:
flag{06b16a72-51cc-4310-88ab-70ab68290e22}



emmmm,就是这样,拜拜~
附上源码#include<Windows.h>
#include<string.h>
#include<stdio.h>

int main()
{
      char serial = { 0 };
      byte index[] ={0x2,0x2,0x2,0x2,0x3,0x1,0x1,0x2,0x1,0x1,0x2,0x1,0x1,0x0,0x1,0x1,
0x2,0x2,0x0,0x1,0x1,0x1,0x1,0x0,0x1,0x1,0x2,0x2,0x0,0x1,0x1,
0x2,0x2,0x1,0x1,0x1,0x1,0x1,0x2,0x1,0x1,0x3 };
      char key[] = { 2,3,6,7 };
      byte index2[] = { 0x6,0xC,0x1,0x7,0xB,0x0,0x6,0x2,
0x1,0x6,0x1,0x7,0x2,0xD,0x5,0x1,0x3,0x3,0xD,0x4,0x3,0x1,
0x0,0xD,0x8,0x8,0x1,0x2,0xD,0x7,0x0,0x1,0x2,0x6,0x8,0x2,0x9,0x0,0x5,0x2,0x2,0xD };


      for (int i = 0; i < 0x2A; i++)
      {
                serial = (key] << 4) + index2;
      }
      for(int i=0;i<0x2A;i++)
                printf("%c", serial);
      system("pause");
      return 0;
}



whklhh 发表于 2018-8-27 20:13

反调试在你下断的前一点地方的CreateThread里,有一个GetWindowsLong在反调,会修改key;
另外还有一些IsDebugPresent的调用,我也没触发就没关心

jmpengbo 发表于 2018-8-27 21:12

支持一下

490694561 发表于 2018-8-27 23:19

如夜影师傅说的,如果跟进去就会触发反调试,key就会变为2222,不跟进去就不会

BeneficialWeb 发表于 2018-8-28 11:58

嗯嗯,知道伐

s98 发表于 2018-8-28 13:24

学习了啊

kanxue2018 发表于 2018-8-28 14:25

好好学习,天天积累

heang567 发表于 2018-9-25 12:30

支持下,学习了

i-ii 发表于 2018-10-2 09:56

收藏了。谢谢楼主分享

GANDALF111 发表于 2018-10-9 07:45

好文好文,支持支持。
页: [1] 2
查看完整版本: 一道简单的CTF逆向题(仅供小白参考,大牛勿喷)