首页 > 其他分享 >go mmap

go mmap

时间:2023-03-13 15:59:51浏览次数:72  
标签:uint64 syscall mmap 0x48 func res go MOVQ

package main

import (
"fmt"
"os"
"syscall"
)


func F(a, b uint64) uint64 {
r := make([]uint64, 1)
cadd(r, 9, 8)
return a + b + r[0]
}

func calls(res []uint64, a, b uint64, m []byte)
func padd(res []uint64, a, b uint64)

func cadd(res []uint64, a, b uint64) {
m, err := syscall.Mmap(
-1,
0,
1023,
// The region must be RWX: RW for writing native codes, X for executing the region.
syscall.PROT_READ|syscall.PROT_WRITE|syscall.PROT_EXEC,
// Anonymous as this is not an actual file, but a memory,
// Private as this is in-process memory region.
syscall.MAP_ANON|syscall.MAP_PRIVATE,
)
if err != nil {
panic(err)
}
r := []byte{
0x48, 0x8b, 0x7c, 0x24, 0x08,
0x48, 0x8b, 0x44, 0x24, 0x20,
0x48, 0x8b, 0x6c, 0x24, 0x28,
0x48, 0x01, 0xc5,
0x48, 0x89, 0x2f,
0xc3,
}
copy(m, r)
calls(res, a, b, m)
}

func main() {
fmt.Println(F(uint64(len(os.Args)), 1))
}






#include "textflag.h"

// func padd(res []uint64, a, b uint64)
TEXT ·padd(SB),NOSPLIT,$0
MOVQ res+0(FP), DI
MOVQ a+24(FP), AX
MOVQ b+32(FP), BP
ADDQ AX, BP
MOVQ BP, (DI)
RET

//func calls(res []uint64, a, b uint64, m []byte)
TEXT ·calls(SB),NOSPLIT,$0
MOVQ a+40(FP), AX
JMP AX



https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html

标签:uint64,syscall,mmap,0x48,func,res,go,MOVQ
From: https://www.cnblogs.com/Janly/p/17211684.html

相关文章

  • Go 结构体
    1.type关键字定义类型别名typemyInt=intvaramyInt=1varbint=2fmt.Println(a+b)类型定义定义接口定义结构体类型判断2.结构体定义......
  • (转)golang goquery selector(选择器) 示例大全
    原文:https://juejin.cn/post/6844903552867893255最近研究Go爬虫相关的知识,使用到goquery这个库比较多,尤其是对爬取到的HTML进行选择和查找匹配的内容时,goquery的选择器......
  • (转)goquery HTML解析
    原文:https://www.jiangguo.net/c/447/pd9.htmlgoquery将jQuery的语法和特性引入进来,所以可以更灵活地选择采集内容的数据项,就像jQuery那样的方式来操作DOM文档,使用起来非......
  • goroutine调度机制(GMP模型)
    进程、线程和协程进程是操作系统分配资源的最小单元,是一个具有一定独立功能的程序关于某个数据集合上的一次运行活动线程是操作系统调度的最小单元,是进程的一个执行单元......
  • MongoDB
    什么是MongoDBMongoDB是一个基于分布式文件存储的开源NoSQL数据库系统,由C++编写的。MongoDB提供了面向文档的存储方式,操作起来比较简单和容易,支持“无模式”的......
  • go .a
    https://blog.csdn.net/huha666/article/details/121305696 https://blog.csdn.net/cooper_1/article/details/103637741 ......
  • golang示例项目 客户信息关系系统
    1.需求分析1)模拟实现基于文本界面的《客户信息管理软件》2)该软件能够实现对客户对象的插入、修改和删除(用切片实现),并能够打印客户明细表2.项目界面设计1)主菜单页面---......
  • 使用Argocd UI发布Guestbook
    1.ArgoCD核心概念Application:应用,一组由资源清单定义的Kubernetes资源,这是一个CRD资源对象Applicationsourcetype:用来构建应用的工具Targetstate:目标状态,指应用......
  • django使用qq的smtp邮箱服务器,作为第三方发送邮件
    1.qq邮箱设置中,开启pop3/smtp服务2.生成授权码(先复制下来)3.django配置#以下是邮箱配置项EMAIL_BACKEND='django.core.mail.backends.smtp.EmailBackend'EMAIL_HO......
  • 【转】Golang Reflect反射的使用详解1 --- makeFunc的使用
     转,原文: https://studygolang.com/articles/12300 ---------------------------------- Whatyouarewastingtodayistomorrowforthosewhodiedyesterday......