reversing-Easy Crack

时间:2022-09-18 20:56:39

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

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

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

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

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

reversing-Easy Crack

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

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

reversing-Easy Crack的更多相关文章

  1. [Reversing.kr] Easy Crack Writeup

    题目:http://reversing.kr/ Easy Crack IDA打开.分析可知Sub_401080是关键函数.F5后. 当满足 则跳转成功.拼接后得到flag flag: Ea5yR3ve ...

  2. reversing.kr easy crack 之write up

    之前学逆向感觉学得一踏糊涂,这阶段好多师傅带我,一定要好好学,重新开始,认真学习. 来看打开可执行文件: 用ollydbg载入,单步执行后停到了入口点: 分析入口点,并没有加壳,于是F9执行程序,跳出 ...

  3. 脱upx壳--初试--单步追踪

    脱upx壳--初试--单步追踪 这里的练习题目是reversing.kr 的Easy Crack 我自己用upx加壳工具给它加了个壳,由于原文件逻辑简单,所以用它来练练手 之后用到的工具是IDA和Ol ...

  4. [Reversing.kr] Easy ELF Writeup

    IDA打开,看到main()函数,当sub_8048451() 返回1 是flag正确. 跟踪函数. 脚本: #!usr/bin/env python #!coding=utf-8 __author_ ...

  5. Assembler : The Basics In Reversing

    Assembler : The Basics In Reversing Indeed: the basics!! This is all far from complete but covers ab ...

  6. Designing CSS Layouts With Flexbox Is As Easy As Pie

    This article is an updated excerpt of the chapter “Restyle, Recode, Reimagine With CSS3″ from our Sm ...

  7. 单链表反转的递归实现(Reversing a Linked List in Java, recursively)

    转自Reversing a Linked List in Java, recursively There's code in one reply that spells it out, but you ...

  8. CentOS下modelsim 10.2c install & crack

    install: 1. install is easy to all : run install.linux 2 crack: this section is important: a. instal ...

  9. crack the coding interview

    crack the coding interview answer c++ 1.1 #ifndef __Question_1_1_h__  #define __Question_1_1_h__  #i ...

随机推荐

  1. EL使用:打印集合

    <%@page import="java.util.HashMap"%><%@page import="java.util.Map"%> ...

  2. Ultra Edit常用正则表达式

    一.怎样可以删除包含特殊字符的行? 你可以用正则表示式全部替换命令替换行中包含的字符.要执行这个操作,你应该先进行查找: 查找: %*YOUR STRING*^p 替换为: (随便什么文字) 帮助文件 ...

  3. 数据结果与算法分析&lpar;1&rpar;&mdash&semi;&mdash&semi;算法分析

          在确定一个算法正确的同时,也要保证算法的有效性.算法分析的最重要的标准时运行时间T(N),运行时间与输入元素个数N有关. 数学基础         T(N) = O(f(N)) 表示T(N ...

  4. jquery密码强度检测

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. 腾讯微博OAuthV2认证实现第三方登录

    1)添加相关jar包: httpmime.jar 以下信息是必须的 //!!!请根据您的实际情况修改!!! 认证成功后浏览器会被重定向到这个url中 必须与注册时填写的一致 private Strin ...

  6. &lbrack;2015-11-10&rsqb;iis远程发布配置

    近期工作总结备忘,下次重新部署时再总结更新. 基本流程 一台初始化的win2012: 安装服务器角色,启用IIS,启用IIS管理服务,启用.Net相关框架等: 安装webdeploy工具(选择完整安装 ...

  7. host头注入

    看到有说这个题为出题而出题,其实我还是这么觉得, host出问题的话我觉得一般只有在审计代码,看到才知道有host注入 假设不提示host注入,就有难度了 常规的注入了

  8. Delegate &amp&semi; Event

    Long time without coding,貌似对programming都失去了曾有的一点点sense了,今日有空再细瞄一下.net的委托和事件. Delegate 首先,委托用于引用一类具有相 ...

  9. 通行导论-IP数据网络基础(2)

    传输控制协议(TCP) 差错控制:TCP使用差错控制提供可靠性,包括检测受到损伤.丢失.失序的报文段 实现方法:1.16位检验和,2.确认机制:采用确认证实收到的报文段,3.重传(设置一个重传超时RT ...

  10. MapReduce过程&lt&semi;原创&gt&semi;

    一.预处理阶段 二.Map阶段 一个Map任务被JobTracker(管家)分配到多个TaskTracker(弟弟)执行,如下图所示,弟弟的map()只负责拆分,虽然map()输出两个相同的键值对,但 ...