当前位置: 首页 > 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.lryc.cn/news/593588.html

相关文章:

  • Redis 如何保证高并发与高可用
  • Python爬虫实战:研究pefile库相关技术
  • PCB 混合介质叠层:材料特性匹配与性能提升的技术解析
  • 1. Spring AI概述
  • OSPF高级特性之Overflow
  • 【c++】提升用户体验:问答系统的交互优化实践——关于我用AI编写了一个聊天机器人……(12)
  • Buildroot vs Yocto:SDK 构建机制的核心差异与实践案例
  • 多线程 示例
  • QT窗口(8)-QFileDiag
  • esp32 sd卡
  • Kubernetes常用命令总结
  • MySQL 深度性能优化配置实战指南
  • 单例模式的设计与实现
  • Salesforce 与外部系统实时集成:基于事件驱动的异步集成架构
  • ChatGPT Agent深度解析:告别单纯问答,一个指令搞定复杂任务?
  • (LeetCode 面试经典 150 题) 49. 字母异位词分组 (哈希表)
  • 软件工程:可行性分析的任务及报告
  • picoCTF 2024: [[NoSQL]] Injection - Writeup
  • JAVA中的Collections 类
  • 【数据结构】二叉树初阶详解(一):树与二叉树基础 + 堆结构全解析
  • windows wsl2-05-docker 安装笔记
  • 光盘存储器的组成与分类
  • 从“数字土著”到“数据公民”:K-12数据伦理课程的设计、实施与成效追踪研究
  • Codeforces Round 1037 (Div. 3)(补题)
  • Codeforces Round 1037(Div.3)
  • 搭建比分网服务器怎么选数据不会卡顿?
  • 配置华为交换机接口链路聚合-支持服务器多网卡Bind
  • 数据结构:字符串(Strings)
  • RGB转灰度方法汇总
  • 本地安装部署Unstructured-api