-
-
[原创]ctf_fifth(终于开张了)
-
发表于: 2016-11-14 16:03 2342
-
分析系统:win XP
分析工具:PEID;IDA;HawkOD
1、首先用PEID加载查看,显示结果正常。
2、用调试器HawkOD加载调试,经过多次下断点尝试,最终在SendMessageA函数入口处断下来,接下来回到重要函数分析。
3、在IDA中找到主要函数为DialogFunc,重点分析SendMessageA函数返回以后的过程。函数SendMessageA返回结果为输入字符串的长度,程序首先判断字符串长度length!=0且为0-9的数字则进行下一步。
4、然后是两个比较重要的验证函数sub_401000和sub_4010C0,函数sub_401000先根据输入字符串顺序,打乱原有的256byte0x00-0xFF数据顺序,然后将256byte数据首尾字节数据相加得出一个128byte数组(第一位和倒数第一位相加,第二位和倒数第二位相加…最后取低位字节),再与数组byte_406030的数据按字节相异或。
5、函数sub_4010C0将sub_401000函数的字符串处理结果,也就是当前内存区域byte_406030的128byte数据,按字节累加,判断结果是否等于0x2979。
6、最后写程序爆破,将000000-999999的数字都试一遍,总有一个对的。最后成功找到正确的数。
分析工具:PEID;IDA;HawkOD
1、首先用PEID加载查看,显示结果正常。
2、用调试器HawkOD加载调试,经过多次下断点尝试,最终在SendMessageA函数入口处断下来,接下来回到重要函数分析。
3、在IDA中找到主要函数为DialogFunc,重点分析SendMessageA函数返回以后的过程。函数SendMessageA返回结果为输入字符串的长度,程序首先判断字符串长度length!=0且为0-9的数字则进行下一步。
4、然后是两个比较重要的验证函数sub_401000和sub_4010C0,函数sub_401000先根据输入字符串顺序,打乱原有的256byte0x00-0xFF数据顺序,然后将256byte数据首尾字节数据相加得出一个128byte数组(第一位和倒数第一位相加,第二位和倒数第二位相加…最后取低位字节),再与数组byte_406030的数据按字节相异或。
5、函数sub_4010C0将sub_401000函数的字符串处理结果,也就是当前内存区域byte_406030的128byte数据,按字节累加,判断结果是否等于0x2979。
6、最后写程序爆破,将000000-999999的数字都试一遍,总有一个对的。最后成功找到正确的数。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
赞赏
谁下载
看原图
赞赏
雪币:
留言: