01.前言

部署运行你感兴趣的模型镜像

自我介绍

  工作三年社畜,因项目变动被辞退,在家闲时刷视频,看了各种大模型,机器学习,AGI等内容,看完之后感觉,如果再不参与到其中,下一秒就会被社会抛弃,感觉到深深的焦虑不安。由于在某音人工智能之父某某舟的影响,于是开始自学,希望可以以此谋生,也希望和同行的人有更多的交流,欢迎来call我。

学习过程

  大概看了三本书,鱼书《深度学习入门-基于Python的理论与实现》、花书《动手学深度学习(Pytorch)》、《自然语言处理入门》,鱼书和花书大多数相同,可以直接看花书。刚开始觉得纸质书更有质感,抱着书,还要对着电脑,属实麻烦,后来直接看电子书了。

  接着是看视频,B站李沐老师的视频,可以配合《动手学深度学习(Pytorch)》书一起学习,一定会事半功倍。还有精度论文系列也是十分值得看的。了解深度学习的基本知识后,开始学习模型优化相关的内容,感觉是个不错的方向。于是开始看论文,查资料,复现代码等。

  个人项目地址:✨github✨ ,包括有模型剪枝、量化和蒸馏的内容。说起来确实有些班门弄斧,感兴趣的可以去看看~

本篇专栏要写的内容

  我们学习CUDA主要参考《CUDA C编程权威指南》,这篇专栏也会按照书中的章节进行。如果需要电子书的可以联系我。
在这里插入图片描述
  本篇专栏想要讲的不仅仅是如何写代码,如果想要快速入手,可以查看 CUDA的官方文档,我们学习编程应该同时理解语言,编程模型,硬件执行模型,以及优化方法,具体来说包括但不仅限于CUDA编程模型、GPU执行模型、GPU内存模型、CUDA流和事件、多GPU编程的相关技术、CUDA感知MPI编程和NVIDIA开发工具。单纯的学会写代码,能运行,这是培训班的节奏。

希望你已经学会的

  • C/C++ 编程经验,可能也会在文章中穿插一些相关知识,希望可以尽可能的大众、简单。
  • 本篇专栏的重点还是讲一些基础的知识,可以作为入门的文章。包括基础知识,包括硬件基础,编程模型,性能方面,和简单的优化,以及项目实际中的一些技巧。

本专栏所有的文章以及代码,都会上传到这里:dive-into-cuda

写在最后

  第一次写文章,不好的地方希望多包含。写的目的,一是为了记录,二是为了可以交到更多的朋友,手动鞠躬,~代码改变世界,期待与你同行

您可能感兴趣的与本文相关的镜像

PyTorch 2.6

PyTorch 2.6

PyTorch
Cuda

PyTorch 是一个开源的 Python 机器学习库,基于 Torch 库,底层由 C++ 实现,应用于人工智能领域,如计算机视觉和自然语言处理

<think>好的,我现在需要帮助用户了解如何使用OllyDbg手动脱壳Lab18-01.exe程序,通过查找尾部跳转指令JMP找到OEP。首先,我得回忆一下手动脱壳的基本步骤,特别是针对UPX这类常见壳的方法。用户提到的尾部跳转指令JMP,通常是在壳代码执行完毕后跳转到原始入口点(OEP)的关键指令。 首先,我应该解释OEP和脱壳的基本概念,确保用户理解为什么需要找到OEP。然后,详细说明在OllyDbg中的具体步骤,比如如何加载程序、运行到入口点、下断点、跟踪执行直到找到JMP指令。这里可能需要提到使用单步执行(F7/F8)和查找POPAD指令,因为UPX壳通常会使用POPAD在解压后跳转到OEP。 接下来,需要提醒用户注意可能的反调试技巧,比如INT3断点或者代码混淆,但Lab18-01.exe可能比较简单,因为是教学示例。然后,找到JMP指令后,如何确定OEP的地址,并用OllyDump插件进行脱壳,同时检查Import表是否正确,是否需要修复。 可能还需要比较脱壳前后的程序,验证是否成功。用户可能会遇到的问题包括找不到JMP指令,或者脱壳后的程序无法运行,这时候可能需要检查是否有 stolen bytes 或者导入表损坏,但如果是UPX壳,通常修复导入表就能解决。 需要确保每一步都清晰,避免使用专业术语而不解释,同时按照用户的要求,所有行内数学表达式用$...$,但在这个问题中可能用不上数学公式,不过如果有地址计算的话,可能需要用十六进制表示,比如$00401000$,但根据系统指令,可能不需要特别处理,只要正确使用LaTeX格式即可。不过例子中的变量都是代码或指令,可能不需要数学表达式,但要注意格式要求。 最后,确保回答结构清晰,分步骤说明,并强调注意事项,比如保存工作、备份文件等。可能需要验证每个步骤的正确性,比如在OllyDbg中的具体菜单选项位置,确保用户能准确跟随操作。</think>以下是手动脱壳Lab18-01.exe的步骤详解: 1. **基础准备** - 备份原始文件`Lab18-01.exe` - 打开OllyDbg → 加载程序 → 程序暂停在壳入口点(EP) 2. **定位OEP关键指令** - 在汇编窗口**右键** → `Search for` → `All commands` → 输入`POPAD`(UPX壳特征指令) - 找到`POPAD`指令后,观察其下方是否有`JMP`或`JMP ESP`指令(例如:`JMP 00401000`) - 若未找到,尝试`Search for` → `Command sequence` → 输入`POPAD; JMP` 3. **跟踪跳转路径** - 在`JMP`指令处**按F2下断点** - **按F9运行**程序触发断点 - 执行后程序将跳转到OEP(例如:`00401000`显示正常函数序言`PUSH EBP`) 4. **验证OEP有效性** - 检查代码段是否出现可识别的编译器特征: ``` 00401000 /$ 55 PUSH EBP 00401001 |. 8BEC MOV EBP,ESP ``` - 使用`Ctrl+A`让OllyDbg重新分析代码结构 5. **执行脱壳操作** - **右键**汇编窗口 → `Dump debugged process` → 勾选`Rebuild Import` - 使用`OllyDump插件` → `Dump process` → 保存为`Lab18-01_dumped.exe` 6. **修复导入表(可选)** - 若脱壳程序无法运行,使用`ImportREC工具`: - 输入OEP地址`00401000` - 点击`AutoSearch` → `Get Imports` → `Fix Dump` **注意事项** - 若遇到反调试(如INT3中断),使用`HideDebugger插件`隐藏调试器 - UPX壳的JMP指令常出现在代码段尾部,偏移量可通过`模块入口点 + 代码段长度 - 0x50`快速定位 - 脱壳后使用PEiD验证是否显示原始编译器信息(如Microsoft Visual C++ 6.0)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值