首页
社区
课程
招聘
[原创] 2018国庆题叹息之墙WP
发表于: 2018-10-2 22:38 3852

[原创] 2018国庆题叹息之墙WP

2018-10-2 22:38
3852

本题开始就会发现一个(让人)很方的函数sub_409FF0,不要怕,其实就是 循环+if分支.

           

字符串找到成功提示00044F13D,他由
    0040A57A  sub eax, 0AD1C95B5h //if [esi+3010h]==0AD1C95B5 触发

         

          
硬断跟踪发现他多处被写入不同的常量,再输入注册码后第一次循环就被写入了是常量,

那么这里肯定就是类似余 hash迭代 (链式查表) 再判断分支.hash多次运算,只有正确hash才能进入正确分支.


先找输入影响的位置
通过run跟踪对比,硬件断点,发现位置0044C19D,0044D170,其实是把所有输入的查表再求和

           

    

修改 0044D193 call funCalc_401020 函数返回值=6E616B34注册成功说明方法正确
现在只要暴力出输入就行了, 9个[0,FFFFFFFFF]的和范围在 9000000000 之间,只要暴力出来就行了

我直接在OD里修改代码跑

           

几小时后发现跑太慢了,然后自己把函数funCalc_401020简化,自己写代码去跑
 

跑的结果是

 00000000:55121C15 00000000  
 00000001:54B3EBA3 00000001  
 00000002:5455BB31 00000002  
 00000003:53F78ABF 00000003  
 00000004:53995A4D 00000004  
 00000005:533B29DB 00000005  
 00000006:52DCF969 00000006  
 00000007:527EC8F7 00000007  
 
剩下问题是
  从数据350组数据中取9个以下来求和,其和=55121C15,154B3EBA3,25455BB31,353F78ABF,453995A4D,5533B29DB,652DCF969,7527EC8F7...
开始想到什么好算法可以快速求解
发现数据好像有规律,这问题就好解决了(只要有规律,就有捷径可走,那问题就是找出这条捷径)


我先排序,看差值大多是00F17B92,所以我先直接 %00F17B92 求解,这种可以凑出一些特殊数据
但发现这个值还是很大,然后我直接分解因数,发现他们几乎都有通用的 2 3 5 7 11 13 17 这些素数,每次1个

依次% 2, % 3, % 5, % 7, % 11, %13, % 17 非0得到如下结果
n = (2,3,5...) 记录下 table[x]%n 非0结果

%  table[x]  table[x]%n               5121C15,154B3EBA3,25455BB31...  %n
2      7FD0E7C7  00000001

                                                 1       1       1       1       1       1       1       1  (10进制)

3      AA6BDFB4  00000002
        5535EFDA  00000001    


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 2
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//