博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二进制学习 wsample01a.exe
阅读量:5304 次
发布时间:2019-06-14

本文共 946 字,大约阅读时间需要 3 分钟。

有趣的二进制学习 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、 修改汇编跳转

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

 

嘿嘿,基本上差不多了。

转载于:https://www.cnblogs.com/zhaijiahui/p/7169315.html

你可能感兴趣的文章
spoj TBATTLE 质因数分解+二分
查看>>
Django 模型层
查看>>
dedecms讲解-arc.listview.class.php分析,列表页展示
查看>>
Extjs6 经典版 combo下拉框数据的使用及动态传参
查看>>
【NodeJS】http-server.cmd
查看>>
研磨JavaScript系列(五):奇妙的对象
查看>>
面试题2
查看>>
selenium+java iframe定位
查看>>
P2P综述
查看>>
第五章 如何使用Burp Target
查看>>
Sprint阶段测试评分总结
查看>>
sqlite3经常使用命令&amp;语法
查看>>
linux下编译openjdk8
查看>>
【python】--迭代器生成器装饰器
查看>>
Pow(x, n)
查看>>
安卓当中的线程和每秒刷一次
查看>>
每日一库:Modernizr.js,es5-shim.js,es5-safe.js
查看>>
ajax连接服务器框架
查看>>
wpf样式绑定 行为绑定 事件关联 路由事件实例
查看>>
利用maven管理项目之POM文件配置
查看>>