一道简单的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;
}
反调试在你下断的前一点地方的CreateThread里,有一个GetWindowsLong在反调,会修改key;
另外还有一些IsDebugPresent的调用,我也没触发就没关心 支持一下 如夜影师傅说的,如果跟进去就会触发反调试,key就会变为2222,不跟进去就不会 嗯嗯,知道伐 学习了啊 好好学习,天天积累 支持下,学习了 收藏了。谢谢楼主分享 好文好文,支持支持。
页:
[1]
2