-
-
[求助]第一阶段第二题答案提交
-
发表于:
2008-10-7 11:34
2598
-
函数跟出来了,但是不会写注册机,最后追出来一个注册码,变了下用户名继续用上个注册码不知道算不算偷懒,本来想追一个不一样的,时间快到了,只好这样提交了
abcdefghijkl
301202120221112123131212223231100010201020102110001021
efghabcdijkl
301202120221112123131212223231100010201020102110001021
具体步骤如下:
1。程序运行起来后,下断bp GetWindowTextA点确定后返回用户代码,到达得到注册码处
2。跟进00403C8C |. E8 82D4FFFF call 00401113
3。进入0040326C . E8 26060000 call 00403897 ;这里,发现为检验INT3和是否修改代码,找到关键跳转处nop掉,从而方便后续调试下断。
4。这段代码对name字段作变换,要求name为12个字符,且后续判断必须为abcdefghijkl,对name字段作判断,根据每个字母在abcdefghijkl中的顺序,产生一个name数组,参与后续运算
5。判断密码,密码为0123几位数字,且为54位
6。00403624 . E8 5EDAFFFF call 00401087 ; keycall
这个call为关键比较call,函数写出来了,但是没能写出逆算法,输入分别为name变换过的数组,一个输出数组,pass变换过的数组,要求最后得到的缓冲区数组为原始name+name。就目前观察得到的结论为密码第一位不能为0,第二,第三不能一样且不能为3,第不知道判断是否有误。
7。
比较晚了,又没写出注册机,分数应该非常低,不过作这样的题很有趣,谢谢诸位评委了
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!