xiaoyu2032 发表于 2022-7-30 23:03

练习笔记之160Crackme-031

# 160CM-031

## 1. 爆破

  爆破比较简单,搜索关键字符,找到第一个跳转位置`00402EE2   /0F84 A1000000 je cracking.00402F89`,将je改成jmp;找到第二个跳转位置`00402FC1   /0F84 8F000000 je cracking.00403056`,将该行代码nop掉,就可以了。

## 2. 算法分析

  用VB Decompiler反编译,找到按键响应事件代码如下:



  从伪代码来看,基本可以看出是将输入的密码字符串经过两次异或运算后,与`VeiajeEjbavwij`进行比较。其中第二次异或运算反汇编识别的不是很准确,需要OD跟踪确认一下函数和参数。

  使用vs2015编写验证程序如下:

```vb
Module Module1
    Sub Main()
      Dim key As String
      Dim password As String
      Dim temp1 As String
      Dim temp2 As String
      Dim i As Int32
      Dim j As Int32
      Dim length As Int32
      temp1 = ""
      temp2 = ""
      Console.WriteLine("请输入密码:")
      key = Console.ReadLine()
      length = Len(key)
      For i = 1 To length
            temp1 = temp1 & Chr(Asc(CStr(Left(4, 1))) Xor Asc(CStr(Mid(key, i, 1))))
      Next
      Console.WriteLine("temp1为:" + temp1)
      For i = 1 To length
            j = i Mod 4
            If j = 0 Then j = 4
            temp2 = temp2 & Chr(Asc(Mid(temp1, i, 1)) Xor Asc(Mid(2000, j, 1)))
      Next
      Console.WriteLine("temp2为:" + temp2)
      Console.WriteLine("按回车键退出程序!")
      Console.ReadLine()
    End Sub
End Module
```

  输入字符串`abcdef`,可以得到前后两次异或运算的结果字符串如下,与OD跟踪的计算结果一致,说明算法正确。



  剩下的就是反向运算,通过已知的字符串`VeiajeEjbavwij`,计算得到password。根据异或运算的特点,只需要将已知的字符串`VeiajeEjbavwij`做输入量,经过两次异或运算,就能得到正确的password。



  将`PamelaAnderson`输入程序输入框,验证正确。



## 3. 总结

  这道题相较上一道题,多了一次异或运算过程。由于反编译识别的结果不大准确,因此第二次异或运算的细节需要动态调试跟踪一下来确定。其中比较关键的函数就是rtcMidCharVar ,这个函数的功能是从字符串中取相应字符,实际就是VB中的MID函数,用法MID("字符串","开始的位置","取几个字符")。

*汇编调用示例及参数含义如下:*

```assembly
push ecx                ;取几个字符
push edx                ;开始的位置
push eax                ;字符串
push ebx                ;结果存放地址
call rtcMidCharVar
```

JamesNice 发表于 2022-7-31 00:00

太棒了,收藏了,非常喜欢。

HenryZhao007 发表于 2022-7-31 01:49

感谢楼主分享,先行收藏起来

camyan 发表于 2022-7-31 08:16

感谢楼主分享,收藏了

y29111150 发表于 2022-7-31 08:39

不明觉厉啊

fsrxn 发表于 2022-7-31 09:10

感谢分享

核桃 发表于 2022-7-31 09:29

感谢楼主分享精神,收藏起来学习学习{:1_893:}

ovz 发表于 2022-7-31 12:03

谢谢楼主,很好的经验

woYaoGuoSiJi 发表于 2022-7-31 15:36

楼主厉害啊,学习了

Topstone 发表于 2022-7-31 15:46

好好好,好好好
页: [1] 2 3
查看完整版本: 练习笔记之160Crackme-031