二进制学习 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窗口程序 首 ...
随机推荐
- 一个小误区 JS中的contains
在Java语言中,contains可以用于判断str1是否包含str2 原生JS中是有contains方法的 但它并不是字符串方法,,仅用于判断DOM元素的包含关系,参数是Element类型 若要在J ...
- mysql优化好文
https://segmentfault.com/a/1190000006158186
- VirtualBox安装linux
VBox相较于VMware要小巧,虚拟机该有的都有了.搭建记录下,学习... centos版本:CentOS-6.6-i386-bin-DVD1 VBox版本:6.0.4-128413-Win 之后可 ...
- thinkphp中用ajax对数据库进行操作
删除和查看详情操作的共同语句:就是怎么显示表? 1.在主体中写表的开头行,想要显示的内容,并且加载数据也要显示的地方也建张表 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 & ...
- python自动化开发-[第十一天]-Mysql
今日概要: 1.初识mysql 2.MySQL的增删改查 3.主键.外键 4.组合和分组 一.数据库的由来 1.什么是数据库? 数据的仓库,在ATM,购物车中存储数据为目录,称为数据库 1.数据以表格 ...
- angular 中如果表单有相同的name一般会出现如下错误
Unhandled Promise rejection Cannot assign to a reference or variable
- 2018ccpc湖南邀请赛后记
第一次出省去打邀请赛,赛前给队友定的目标是打个铜,这样奖金就可以报销我们的伙食费了 5.12 热身赛,ak的心态冲进去,爆零逃出来 (为什么热身赛没有签到题啊),出来一度以为这场比赛要打铁,毕竟老远过 ...
- RHCE基础环境系统的搭建
RHCE基础环境系统的搭建 安装前提: 安装的时候对系统和硬件的要求: 红帽系统安装队系统的要求:Windows操作系统选择64位的内存至少6GCPU需要支持虚拟化技术在做红帽系统实验的时候,把360 ...
- ElasticSearch的插件(Plugins)介绍
ElasticSearch的插件(Plugins)介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 目前可以扩展ElasticSearch功能的插件有很多,比如:添加自定义的映 ...
- vue实现筛选功能,文字选中变色
<template> <Poptip trigger="hover" title="Title" content="content& ...