欢迎光临
箫启灵个人站点

[汇编基础] 修改EIP指令学习,利用指令破解软件登录(练习exe)

EIP寄存器的作用:

CPU下一次要执行的代码指令的地址

1、 JMP指令:

MOV EIP,寄存器/立即数/内存    简写为   JMP 寄存器/立即数/内存 

jmp的原理就是:把eip的值修改成你想设置的值

2、 CALL指令:

PUSH 下一行地址

MOV EIP,立即数/寄存器/内存     简写为:CALL 立即数/寄存器/内存

与JMP唯一的区别:

在堆栈中存储Call指令下一行地址 ,就是多了一个push 下一行地址

原理:

1、把cll指令的下一行地址放入栈顶。

2、esp的值-4

3、eip的值改成你想跳的指令地址

3、 RET指令:

ADD ESP,4

MOV EIP,[ESP-4]简写为:RET 

原理:

1、esp+4

2、eip的值改成[esp-4]。

逻辑上:

ret = pop eip

————————————练习01.exe——————————-

如图,有个demo程序,密码必须是123456才会提示成功,其他的提示都是提示失败。

demo下载地址:

链接: https://pan.baidu.com/s/1DbIAbTt77Tn0JUuSGvZ5lA 密码: gwkj

QQ截图20180423131648.png

QQ截图20180423131658.png

打开od,载入程序反汇编

QQ截图20180423135724.png

判断的结果的汇编地址:004096DB

成功登录CALL起始地址:004096E1 (有传参)

成功登录的CALL地址   :00409709 

登录失败call执行的起始地址:00409749  (有传参)

登录失败的CALL地址:00409771 

———————————————————–

简单破解方式:

1、nop 004096DB判断结果那一行

2、把00409749 行的代码改成 jmp 004096E1 (直接修改eip,把程序执行到成功的代码里面)

破解成功后,任何密码都可以登录成功。

后续的文章中将会教大家怎么查找call,怎么找参

分享到:更多 ()

评论 抢沙发

评论前必须登录!

 

刺蝴蝶De箫启灵

作死购站点VIP视频站站点