当前位置: 首页 > news >正文

OllyDbg技巧学习

1 尝试在反汇编代码中找到一个函数的二进制代码

    有的时候需要一个函数的二进制代码,注入到另外的一些地方;以此程序为示例,

八叉树的C++实现与原理解析-CSDN博客

Ollydbg打开可执行文件,我想先找到此函数的二进制代码体,

createOctree(OctreeNode<T> * &root,int maxdepth,double xmin,double xmax,double ymin,double ymax,double zmin,double zmax)

一直在里面晃来晃去的找, 在第四列会给出一些函数的名字,但是确实没有 createOctree 这个文本;

执行如下的菜单,

弹出如下的窗口,

 

这是程序中包含的所有文本,没有 createOctree ;

那么系统的函数名,像调用的Win32 API会被识别标记,自己的函数名,应该是编译之后变成了某种标记,不再是文本的函数名;

然后又找;发现,在第4列,有Arg1、Arg2这些东西,这应是函数的参数,被识别出来;

createOctree函数,有8个参数,代码只有此函数有8个参数,找到一个有Arg1-Arg8的Call,这个被Call的地址,应该就是createOctree函数的起始地址;

上图就是一个有8个参数的Call,0040E764,这地址应该就是 createOctree函数的起始,转到此地址,

上图应该就是 createOctree函数的起始;

那么如何找到函数的结尾呢;应该是找到call对应的ret,就结束了;问题是此call里面又包含多个call,不知怎么找到对应函数起始的call的ret;下回再说;

然后看一下代码里有 system("cls"); 这是从代码调用一个DOS命令;

在反汇编代码中识别出字符串 "cls",看到有2个地方都调用了0040C3CE,

转到0040C3CE,这里应该就是system("cls")这个调用的执行部分的开始,

 

然后往下看一下,看到一个ret,在ret之前有command.com、cmd.exe这些字样,这就对了,cls是一个DOS命令,DOS命令是属于command.com或者cmd.exe;到这个ret,system("cls")这个语句的执行部分也许就结束了;

 

有时间继续; 

http://www.dtcms.com/a/287217.html

相关文章:

  • Go-Redis × 向量检索实战用 HNSW 在 Redis 中索引与查询文本 Embedding(Hash JSON 双版本)
  • 子线程不能直接 new Handler(),而主线程可以
  • LLM大模型微调技术与最佳实践
  • C语言:20250719笔记
  • 目标检测中的标签分配算法总结
  • 【OD机试】停车场收费
  • OpenCV特征点提取算法orb、surf、sift对比
  • Netty网络聊天室及扩展序列化算法
  • 2025年睿抗机器人开发者大赛CAIP-编程技能赛(省赛)-RoboCom 世界机器人开发者大赛-本科组
  • 微软原版系统下载的几个好用网站
  • LVS——nat模式
  • 【ArcGIS技巧】最近分享的GIS插件总结与优化
  • 实战分享:Web3 前端开发Defi项目
  • 【设计模式C#】外观模式(用于解决客户端对系统的许多类进行频繁沟通)
  • 【Unity编辑器开发GUI.Window】
  • 企业运维实战:Jenkins 依赖 JDK21 与应用需 JDK1.8 共存方案(含流水线配置)
  • 软件工程:可行性分析的任务及报告
  • 【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 基于wordcloud库实现词云图
  • 使用nvm安装node、npm、pnpm以及编译项目教程
  • 告别项目混乱:基于 pnpm + Turborepo 的现代化 Monorepo 工程化最佳实践
  • 【音视频协议篇】RTSP系列
  • gitlab+jenkins
  • 综合实验--eNSP实验
  • k8s 基本架构
  • Flowable31动态表单-----------------------终章
  • AI编程工具对比:Cursor、GitHub Copilot与Claude Code
  • bws-rs:Rust 编写的 S3 协议网关框架,支持灵活后端接入
  • 【Linux】AKHQ实现kafka可视化
  • 电力载波通信技术全景解析:从历史演进到智能电网创新应用
  • 【Linux服务器】-MySQL数据库参数调优