首页
社区
课程
招聘
[求助]包含多个中断的程序执行有概率会错
2023-7-31 18:11 2560

[求助]包含多个中断的程序执行有概率会错

2023-7-31 18:11
2560

尝试用中断来让程序“倒着执行”
这个函数是 int 0fh 的处理函数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
.data
a dq 0
b dq 0
 
.code
 
Int0f proc
    swapgs
    mov [a], rax
    mov [b], rbx
 
    xor rax, rax
    xor rbx, rbx
 
    nop
 
    mov rax, [rsp]  ;指令地址
    mov byte ptr bl, [rax]  ;待减的值
    sub rax, rbx
    mov [rsp], rax
 
    mov rbx, [b]
    mov rax, [a]
    swapgs
    iretq
Int0f endp

这个程序(a.exe)是测试程序的主函数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[BITS 64]
 
SECTION .text
global WinMain
 
l0:
    ret
l1:
    mov rax, 1
int 0fh
db l2 - l0 -1
l2:
    mov rax, 2
int 0fh
db l3 - l1 - 1
l3:
WinMain:
    mov rax, 3
int 0fh
db l4 - l2 -1
l4:
int 0fh
ret

运行a.exe后有概率返回正确的1,也有概率返回-1073741819(通过%ERRORLEVEL%查看),求助怎么稳定让程序返回正确结果?

另:通过windbg在int 0fh指令前下硬件断点,可以让程序稳定正确运行,但实际使用中也不能在另一台电脑上挂一个windbg呀


[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界

最后于 2023-7-31 19:33 被Billraozihan编辑 ,原因:
收藏
点赞0
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回