二进制学习 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、 修改汇编跳转
直接改变跳转语句,实现程序走向的改变

嘿嘿,基本上差不多了。
二进制学习 wsample01a.exe的更多相关文章
- 二进制学习——Blob,ArrayBuffer、File、FileReader和FormData的区别
		
前言: Blob.ArrayBuffer.File.fileReader.formData这些名词总是经常看到,知道一点又好像不知道,像是同一个东西好像又不是,总是模模糊糊,最近终于下决心要弄清楚. ...
 - C++学习(四)(C语言部分)之 二进制
		
二进制学习时的笔记(其实也没什么用,留着给自己看的) 二进制简介只有 0 1 优点:1.二进制状态简单2.可靠性.稳定性高3.运算规则简单,简化设计4.通用性强 二进制计算正数二进制十进制转二进制(除 ...
 - Python 学习笔记 编程基础汇总000
		
编程基础知识汇总000 1.计算机结构 2.编程语言分类 3.字符编码由来 计算机结构 计算机组成五大部件: 控制器.运算器.存储器.输入.输出 控制器(Controler):对程序规定的控制信息进行 ...
 - pwn学习日记Day18 《程序员的自我修养》读书笔记
		
知识杂项 obj文件:当前源代码编译成二进制目标文件 exe文件:将.obj文件与库文件.lib等文件链接生成的可执行文件 一个现代编译器的主要工作流程如下: 源程序(source code)→ 预处 ...
 - COM编程概述
		
所谓COM,英文为Componet Object Model,中文为组件对象模型(其实这种解释只有在考试卷上才具有一点实际意义). [1]为什么需要COM? COM是为了解决OLE问题而产生的.COM ...
 - COM 编程基础
		
DirectX 采用了 COM 标准.而 DirectShow 是一套完全基于 COM 的应用系统.要想深入学习 DirectShow,掌握一些 COM 编程的基础知识是必不可少的. 一.COM 是什 ...
 - NoSql之MongoDB--Windows下数据库配置及初步使用
		
1.NoSql简介 NoSql(Not Only Sql)指的是非关系型的数据库.下一代数据库主要解决几个要点:非关系型的.分布式的.开源的.水平可扩展的.原始的目的是为了大规模web应用,这场 运动 ...
 - VC++源文件编码
		
目录 第1章源代码文件 1 1.1 研究思路 1 1.2 实验结果 3 1.3 #pragma setlocale 4 1.4 /source-charset 5 1.5 ...
 - 32位汇编第二讲,编写窗口程序,加载资源,响应消息,以及调用C库函数
		
32位汇编第二讲,编写窗口程序,加载资源,响应消息,以及调用C库函数 (如果想看所有代码,请下载课堂资料,里面有所有代码,这里会讲解怎么生成一个窗口程序) 一丶32位汇编编写Windows窗口程序 首 ...
 
随机推荐
- bzoj 4326: NOIP2015 运输计划(二分+树链剖分)
			
传送门 题解: 树链剖分快速求解任意两点间的路径的权值和: 然后,二分答案: 此题的难点是如何快速求解重合路径? 差分数组可以否??? 在此之前先介绍一下相关变量: int fa[maxn]; int ...
 - Windows Server 2003 添加“Resin”到“服务”出错
			
将“Resin”添加到[服务] 进入安装目录,执行 httpd -install 从[服务]移除 执行 httpd -remove ---------------------------------- ...
 - Vue(基础七)_webpack打包工具(续)
			
---恢复内容开始--- 一.前言 1.webpack-dev-server 2.es6的解析 3.单文件引入 二. ...
 - flask models循环使用和migrate迁移脚本
			
使用models目的是为了将创建数据库模型的代码与主程序代码分离,migrate的作用就是在数据库字段改变时不用drop表直接做更新操作 新建 models.py exts.py manage.py ...
 - docker swarm(当前官网示例)
			
介绍 Docker Swarm 是 Docker 公司推出的官方容器集群平台,基于 Go 语言实现 作为容器集群管理器,Swarm 最大的优势之一就是 100% 支持标准的 Docker API.各种 ...
 - Xenserver之设置Xenserver和VM机开机自动启动
			
一.设置Xenserver开机自动启动 [root@xenserver-DS-TestServer09 ~]# xe pool-list uuid ( RO) : b1c803a6-88cf-7b24 ...
 - Hadoop HDFS常用操作命令
			
hadoop常用命令:hadoop fs查看Hadoop HDFS支持的所有命令 hadoop fs –ls列出目录及文件信息 hadoop fs –lsr循环列出目录.子目录及文件信息 hadoop ...
 - Linxu系统下JDK1.7(rpm)安装
			
一.JDK下载地址: https://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html 二.查看 ...
 - vue中nextTick
			
vue中nextTick可以拿到更新后的DOM元素 如果在mounted下不能准确拿到DOM元素,可以使用nextTick 在Vue生命周期的created()钩子函数进行的DOM操作一定要放在Vue ...
 - maven打包可执行jar文件运行报错
			
起因 项目中同时依赖了Spring和MyBatis,并使用mybatis-spring集成MyBatis和Spring. 使用maven打包为可执行jar文件运行,打包插件为:maven-shade- ...