windows - x64 从 asm 调用 createthread
问题描述
push 0 //tid
push 0 //flag
sub rsp, 20
mov r9,0 //parameter
mov rcx,0 //security attribute
mov rdx, 0 //stacksize
mov r8,threadmem //address
call kernel32.createthread
我以这种方式调用createthread。
但是如果我在参数中输入任何地址,我的代码就不起作用。只是让我的电脑滞后而没有任何反应,似乎创建了线程但我的代码没有执行。但是,如果我不输入参数并将其自身保留为 0,它就可以工作。谁能帮我?
解决方案
您没有严格遵循 x64 调用约定。push 和 sub rsp 可能只出现在 prolog 中。
Windows 会反汇编您的代码,无法访问的代码仍然会因此而挂起。我不得不完全放弃。
推荐阅读
- ios - 如何在情节提要中嵌入和对齐?
- javascript - 从 Coindesk API 获取 [Object] 而不是 JavaScript 对象
- firebase - Flutter Firebase onAuthStateChanged
- typescript - AWS cdk typescript 显示错误构造范围
- firebase - stream.listen((列表
documentList) 返回 DocumentSnapshot.Flutter [Firebase] 的实例 - node.js - 从“domcontentloaded”事件中获取页面状态码
- python - 更快地查找哪些列表共享元素
- laravel - 带有连字符 404 错误的 Laravel 路由参数
- angular - 如何在 Angular 9 中为响应式表单添加条件验证器
- android - 在 ContentProvider#onCreate() 中调用 getContext()