• reversing-Easy Crack


    Easy Crack
    程序启动后输入任意字符会显示一个MessageBox的Incorrect Password。

    打开OllyDbg,载入程序后查找到目标字符串Incorrect Password,之后转到程序,字符串前后代码如下:


    程序通过GetDlgItemTextA获取输入字符串,之后经过一段算法判定对错。下面分析算法:

    首先确定esp+5位置字符为0x61,即a。

    之后判断esp+A处字符串是否为5y。 这里由于push 2指令,栈针会上移4byte,因此此时esp=esp-4,所以现在的esp+A相当于上一次的esp-4+A(esp+6),这样就和上一次esp+5成为连续的字符串,也就是3个连续的字符为a5y。

    之后匹配字符串R3versing,并在字符串头部(esp+4处)添加字符为E。因此答案为Ea5yR3versing。

    这里算法由于涉及到esp的改变,因此OD跟踪起来比IDA静态分析更加简单。可以直接将程序跑起来,当程序碰到相关判断的地方(一般是cmp)会改变标志位(一般是ZF),只需要改变标志位寄存器的值让它按照你要的逻辑执行下去即可,当然你需要同时记录这些让逻辑保持正确的字符,你可以直接在栈(或数据区)中作出修改。之后当程序跑完之后,你的栈(或数据区)中就是一个正确的值。

  • 相关阅读:
    react脚手架搭建及配置
    mac使用技巧
    nginx配置
    vue常见前端UI库
    自定义指令
    代码缩进修改
    webpack学习入门
    webpack使用extract-text-webpack-plugin打包时提示错误
    webpack未成功全局安装
    基于jQuery的AJAX实现三级联动菜单
  • 原文地址:https://www.cnblogs.com/spd2016/p/5495295.html
Copyright © 2020-2023  润新知