zoukankan      html  css  js  c++  java
  • 二进制学习 wsample01a.exe

    有趣的二进制学习 wsample01a.exe

    这是一个基础的入门小程序,点击运行后发现弹出小框,Hello! Windows

     

    用ida静态分析程序,这一段是程序的主逻辑,也是全部逻辑:)

     

    可以看到程序只有一个分支test eax,eax是判断条件,直接决定程序的走向。

    从头来看

    String2 = 2012

    String1 = 获取输入的数据

    lstrcmpW(eax) 执行函数

    Caption “MESSAGE” 设置弹框标题

    进入test判断,分两种情况

    1、输入的是2012,if eax=0: ZF=1 jnz跳转不实现

    else:ZF=0 jnz跳转实现

    00401000  /$  55               push ebp

    00401001  |.  8BEC             mov ebp,esp

    00401003  |.  8B45 10          mov eax,[arg.3] 读取输入的内容给eax

    00401006  |.  68 04214000      push wsample0.00402104                   ; /2012

    0040100B  |.  50               push eax                                 ; |String1 = 00000001 ???

    0040100C  |.  FF15 00204000    call dword ptr ds:[<&KERNEL32.lstrcmpW>] ; lstrcmpW

    00401012  |.  6A 00            push 0x0                                 ; /Style = MB_OK|MB_APPLMODAL

    00401014  |.  68 10214000      push wsample0.00402110                   ; |MESSAGE

    00401019  |.  85C0             test eax,eax                             ; |

    0040101B  |. /75 18            jnz short wsample0.00401035              ; |

    这个程序的逻辑已经理清了,接下来通过修改值来改变程序的走向。

    1、 修改ZF值

    test比较之后的关键跳转jnz,这个跳转有ZF控制,修改ZF值,改变跳转走向。

     

    2、 修改汇编跳转

    直接改变跳转语句,实现程序走向的改变

     

    嘿嘿,基本上差不多了。

  • 相关阅读:
    Flask-1-03-HelloWorld
    Flask-1-02-安装环境
    Flask-1-01-初识Flask
    Ubuntu解决virtualbox 安装增强包的报错
    ubuntu安装软件has install-snap change in progress错误
    virtualbox
    Nginx 403 Forbidden错误的解决方法
    处理Redis报错:redis.exceptions.ResponseError: MISCONF Redis is configured to save RDB snap
    在Ubuntu18.04上安装MySQL
    Python3 错误、调试和测试
  • 原文地址:https://www.cnblogs.com/zhaijiahui/p/7169315.html
Copyright © 2011-2022 走看看