zoukankan      html  css  js  c++  java
  • 逆向破解之160个CrackMe —— 014

    CrackMe —— 014

    160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序

    CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 crackme 的人可能是程序员,想测试一下自己的软件保护技术,也可能是一位 cracker,想挑战一下其它 cracker 的破解实力,也可能是一些正在学习破解的人,自己编一些小程序给自己破。

    CrackMe简称CM。
    程序下载地址:点击我

    来源 <-点击查看

    编号 作者 保护方式
    014 bjanes Serial(VB5)

    工具 

    x32dbg

    VB Decompiler Pro

    peid

    开始破解之旅

    ON.1

    首先使用peid查壳,发现是VB的程序

    使用x32dbg打开014号程序,查找字符串

    找到了报错字符串,双击进入报错字符串地址,在上方跳转处下断点,运行发现并没有拦截到断点处,可能断点地址是错误的

    我们按Ctrl+B  输入“816C24” 这是VB的按钮事件,在这里我们要选择整块,不然搜索不到,点击确定

    搜索到五处地址,我们在五处地址上分别下断点

    在程序上输入任意数据,点击Check it按钮,程序停在了我们的断点处,F7两次进入第一个jmp ,单步向下走

    此时我们来到了00403A04地址处,发现在该出跳转,跳转到了错误的提示字符,我们将JNE改为NOP运行

    bingo  爆破成功~

    ON.2

    使用VB Decompiler Pro打开014号程序 

    将反编译代码转换为Python代码

    code = ''
    for i in range(1, 10):
    a = i ^ 2
    code = code + str(a)[-1]
    print(code)

    得出结果为301674501我们输入到输入框内,点击Check it按钮

    bingo ~答案正确

    在这里我们需要看一下汇编代码,在汇编中计算异或后我们得到的是一个一位数,8和9的循环计算答案是两位数,这里我们需要细心观察一下反编译代码中Right指的是右边的一位,所以就是8和9循环中异或计算值的右边一位,也就是最后一位。

  • 相关阅读:
    java bigdecimal (java double也时会失真)
    图像二维频谱的理解
    设计模式:装饰器模式实现 固定类功能
    c# winform 技术提升
    c# 多态的美丽(虚方法、抽象、接口实现)
    5天玩转C#并行和多线程编程
    [C#防止反编译].NET 产品版权保护方案 (.NET源码加密保护)
    用Ngen指令加快C#程序的启动速度
    cmd 批处理制作
    c#程序打包、机器代码生成(Ngen.exe)
  • 原文地址:https://www.cnblogs.com/lonenysky/p/11383769.html
Copyright © 2011-2022 走看看