08067-wp

作者: fantasy_learner | 来源:发表于2018-12-24 11:43 被阅读0次

    cm50

    • 程序类型 : .net程序
    • 关键数据 :

    int32 pn[] # 存储号码内容

    this.point # 存储号码长度

    this.contrast[] # 结果对比字符串

    • 关键函数 button12_click
    • 分析得到要求 (根据.net rlector 反编译结果):
    1. 正确结果长度为 5
    2. pn 每个元素 ^4 后 结果为[52 , 60 , 52 ,50 ,51] (this.contrast[])
    #根据处理过程逆推 输入的号码
    result = [52 , 60 , 52 ,50 ,51]
    for i in result:
        print(chr(i ^ 4) , end = " ")  #结果 0 8 0 6 7
    

    cm100

    • 程序类型 : MFC
    • 新的知识点 : od 获取输入框输入的断点 bp GetWindowTextA(W)
      。在命令框中输入文字后程序断在该api处 ,然后使用alt + f9 从 user32块 返回到 CM100的程序段 ,再从 cm100 的调用块 返回到逻辑块 即可找到 目标代码段 ,返回后的地址在 4026A6 , 从ida中找到该地址( 在函数sub_402600中) ,根据下图两个字符串 找到关键函数 (改名为target)


      alt
    • tip :
    • 1.sub_402600 # 最终判断函数
    • 2.sub_402310 # 处理和判断输入函数 :要求 :返回值不为0 即为成功

    处理过程 :

    • 1.对输入的 奇偶数位置 的字符交换 如 0 - 1 交换 7轮 外循环
    • 2.对输入的 4的倍数位置交换 4-8 8-12 12-16 3轮 内循环
    • 3 .解题方法 : 逆过程 , 得出结果
    result = list("1H@Y1S0718760Dm3")
    
    start = 14
    for i in range(7):
        start -= 2
        temp_start = 12
        while temp_start  > 0 :  
            result[temp_start ] , result [temp_start - 4] = result[temp_start - 4] , result[temp_start ]
            temp_start -= 4
        result[start] , result[start + 1] = result[start + 1] , result[start]
    for i in result:
        print(i , end="")
    
    

    相关文章

      网友评论

          本文标题:08067-wp

          本文链接:https://www.haomeiwen.com/subject/yqgakqtx.html