intel汇编几种跳转的区别

几种跳转指令和对应的机器码

0xE8    CALL    后面的四个字节是地址

0xE9    JMP    后面的四个字节是偏移

0xEB    JMP    后面的二个字节是偏移

0xFF15    CALL    后面的四个字节是存放地址的地址

0xFF25    JMP    后面的四个字节是存放地址的地址
比如想实现循环跳转当前指令,就可以是eb fe,或者e8 fb ff ff ff

0x68    PUSH    后面的四个字节入栈

0x6A    PUSH    后面的一个字节入栈

shellcode跳转回原始OEP方法一

大部分人比较喜欢直接jmp跳转到原始oep,这时候一般都用e9跳转,e9后面的四个字节是一个偏移地址。
计算公式: 偏移地址 = 目的地址 - 跳转基地址(jmp的下一条指令的地址)
也就是 原始OEP - jmp的下一条指令的地址

db    0e9h        ;这是jmp
OEPOffs:
dd    ?        ;这里是4个字节 未初始化


偏移地址 = 原始OEP - (offset OEPOffs + 4)  为什么+4 因为OEPOffs标号向后偏移4个字节 才是jmp的下一条指令地址  也就是跳转基地址

shellcode跳转回原始OEP方法二

有些人用 push oep然后jmp dword ptr [esp]的方法跳回原始oep,这时候shellcode要这样写:

db    68h
OEP:
dd    ?
jmp dword ptr [esp]


68h是 push后面四个字节的意思  dd ? 声明了四个字节,然后通过OEP标号,定位到这个位置,然后把原始OEP写进去就可以了

参考资料https://blog.csdn.net/wzsy/article/details/17163589 

### SAM模型微调的实现细节 #### 1. SAM 2与SAM 1的主要差异 Segment Anything Model (SAM) 的第二代版本(SAM 2)相较于第一代(SAM 1),在性能和灵活性上有了显著提升。具体来说,SAM 2引入了更高的计算效率以及更强的多模态支持能力[^1]。这些改进使得SAM 2更适合复杂的实际应用场景。 #### 2. 微调预备知识 为了成功对SAM模型进行微调,开发者需要掌握一些基础概念和技术栈。这包括但不限于深度学习框架的选择、数据集准备流程以及提示机制的理解。例如,在使用自定义数据集时,可以采用点、框或者两者的组合形式来提供分割提示[^2]。 #### 3. 数据预处理与输入格式调整 对于SAM模型而言,其接受的提示输入具有严格的维度要求。因此,在构建自定义数据集的过程中,必须确保每条记录都能被正确转换为目标模型所需的结构化数据包。此过程通常涉及图像裁剪、标注映射等操作步骤。 #### 4. 参数高效微调策略 - Conv-LoRA 方法 鉴于传统全量参数更新方式可能带来的过拟合风险及资源消耗问题,研究者提出了基于Convolutional Low-Rank Adaptation (Conv-LoRA) 技术的解决方案。这种方法仅需修改少量新增加的小型卷积层权重即可完成整个网络的功能扩展或迁移优化工作[^3]。相比其他复杂方案,它既保持了原有架构的知识积累又增强了新任务下的表现力。 #### 5. Python代码示例:利用Conv-LoRA 进行SAM微调 以下是应用Conv-LoRA 对SAM实施快速适配的一个简化版Python脚本: ```python import torch from segment_anything import sam_model_registry, SamPredictor from conv_lora import apply_conv_lora def load_sam_with_lora(model_type="vit_b", checkpoint_path=None): device = "cuda" if torch.cuda.is_available() else "cpu" # 加载原始SAM模型 model = sam_model_registry[model_type](checkpoint=checkpoint_path).to(device) # 应用Conv-LoRA改造 modified_model = apply_conv_lora(model=model, rank_ratio=0.25) return modified_model if __name__ == "__main__": sam_checkpoint = "./sam_vit_b_01ec64.pth" tuned_model = load_sam_with_lora("vit_b", sam_checkpoint) print(f"Tuned SAM with Conv-LoRA loaded successfully.") ``` 上述代码片段展示了如何加载标准SAM模型并将其转化为具备Conv-LoRA特性的变体实例。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值