zoukankan      html  css  js  c++  java
  • Crackme030

    Crackme030 的逆向分析 

    1.程序观察

     
    程序刚打开的界面是空白的,只有两个按钮。
     
    点击 File,里面有个 Password 按钮,点击才会出现输入密码的界面

    2.简单查壳

     

    没有壳。

     

    3.程序分析

     因为程序是使用 VB5 编写的,所以我们先使用 VB Decompiler 加载程序看一下

     可以看到,程序有3个面板,6个点击事件。地址 4030F0 处的代码可能就是我们需要的。

     然后使用 OD 载入程序,搜索字符串

    进入代码处,可以看到上方不远处有一个比较函数

    运行到此处,查看函数的参数

     

    第一个参数本应该是我们输入的密码才对,我在此输入的是 123456,但现在却是一些莫名其妙的符号。
    第二个参数应该就是正确的密码。

    因为第一个参数不是我们原本输入的密码,所以我们猜想程序可能对我们输入的密码进行了一些处理之后,才进行的比较。所以我们要对上面的字符串进行相应的逆处理,才能得到真正的密码。

    来到代码开头,也就是上面看到的地址 4030F0 处,下断点,运行程序

     程序首先获取输入的密码,然后求得密码的长度

    然后建立循环,循环次数为密码的长度。在循环中,程序每次取输入密码的一个字符,求得其 ASCII 值。然后依次和字符串 "2000" 的单个字符的 ASCII 值进行异或运算。也就是说,密码的第一个字符的 ASCII 值和 2 的 ASCII 值进行异或运算,密码的第二个字符对应 0进行运算,密码的第5个字符又再次和 2相对应进行运算。

     

     循环完成之后,才会进行比较

    根据其方法,我们可以反推出其真正的密码

    我们将字符串"qBQSYdXUe_BV"再一次和字符串"2000"进行异或运算即可

     

    相关文件在我的 Github 

  • 相关阅读:
    750. 角矩形的数量(动态规划)
    Python中with标签的使用详解
    GraalVM
    spring 源码解析(二) 2.下载源码,及错误的排除。
    spring 源码解析(一) spring的架构
    词典
    java日志框架 (五)
    java日志框架 (四) 日志相关
    java日志框架 (三) 日志框架使用 之 SLF4J + Log4j2
    java日志框架 (二) 日志框架使用 之 SLF4J + logback
  • 原文地址:https://www.cnblogs.com/white-album2/p/11712249.html
Copyright © 2011-2022 走看看