Tips of Ollydbg 查看调用堆栈、交叉引用

用OD手动查找窗口过程函数(classProc) 有时候我们用OD查找窗口的classProc地址是不正确的,这时候可以用如下方法手动查找 1. 用OD打开被调试程序     打开 插件->API断点设置工具->常用断点设置,把CreateWindow的三个函数勾上,确定     2. 按F9让程序运行并在断点停下,直到在堆栈窗口观察到你要的窗口名字(本文以“计算器”为例) 3. 一路F8执行直到回到调用Cre 阅读详情
AI摘要

本文详细介绍使用OllyDbg(OD)进行软件调试的高级技巧,包括利用ALT+K查看调用堆栈,CTRL+K追踪函数调用关系,以及CTRL+R进行交叉引用查找,帮助读者深入理解程序执行流程。

0) ALT+K 查看调用堆栈

使用od破解软件时,经常会用到栈回溯的方法,假设我们现在所在main个函数的入口点
在这里插入图片描述
使用alt+k来查看此函数的父级调用
在这里插入图片描述
堆栈调用窗口显示的每一行,代表从上一层函数,进入当前函数的入口,这个功能缺点就是只能在程序运行到某个函数中,并且断下来后,才能使用。

1) CTRL+K

假设我们有这样的需求,我不想运行到某个函数,只想查看该函数的调用关系。

  • 我想知道谁调用了它?
  • 我想知道它又调用了哪些函数?

这时候使用CTRL+K可以清楚的看到某个函数的上一层,以及这个函数内部调用了那些方法
在这里插入图片描述
还是以main函数为例,我们看到:

  • 第一列 显示的是main函数的上一层函数是谁
  • 第二列 显示的是当前的函数
  • 第三列显示的是当前函数内部调用了那些函数

在任意一列,双击,可以把双击的那一列,作为当前函数,进一步追踪。假设我双击了test.CDemo::CDemo这个函数
在这里插入图片描述

2) CTRL+R 交叉引用

我们知道,IDA中有个很强大的功能,就是查看某个函数或者变量的交叉引用。同样OD中也这样的功能
我在main函数的入口点,按下CTRL+R,可以看到谁引用了这个函数入口的地址。
在这里插入图片描述

假设我在内存窗口,看到有个重定位的变量地址,先选中它,然后按下CTRL+R
在这里插入图片描述

我可以找到所有引用这个常量的地方,同理,字符串常量也可以。
在这里插入图片描述

实战吾爱论坛160个crackme——(1)堆栈回溯法 已经有人拿这160个crackme程序练手,并且写详细的破解帖子了 完全没别人写得好,权当给自己看,积累经验0.0 此程序是输入注册码失败后有弹窗的,试试堆栈回溯法 运行程序随便输入用户名注册码,待错误提示窗口弹出后不要点确定!!! F12暂停程序 然后F12,暂停程序,再点K  查看堆栈 很明显在程序领空有一个错误弹窗提示! 显示函数过程 此后来到了函数调 阅读详情

相关推荐

Apache Hop环境搭建实战:从零到一的下载、安装与配置指南

本文详细介绍了Apache Hop环境搭建的全过程,包括下载、安装与配置指南。从选择正确的JDK17版本到设置关键环境变量,再到启动GUI界面和解决常见问题,提供了全面的实战指导。适合数据工程师和ETL开发者快速上手这一强大的数据集成工具。

weixin_42634811的博客 573

OD使用心得

1、对于找不到下断的地点的程序: 可以先直接运行,随意输入序列号,按确定,等待程序弹窗停下。 返回到OD,按F12暂停,此时点工具栏中的“k”,会出现当前的调用堆栈,找到需要找的函数名,右键->显示调用,即可显示出该函数的程序领空所在位置。 此方法可适用于VB的P-code方式编译的程序 未完待续。。。。

lj94093的专栏 1038

cst-python联合仿真的问题解决

cst与python联合仿真出现无法调用CST的问题解决

ayihu_的博客 2370

OD快捷键总结

F2 设置断点 打开一个新的可执行程序 (F3)  F3 - 弹出“打开32位.EXE文件”对话框[Open 32-bit .EXE file],可以选择可执行文件,并可以输入运行参数。 重新运行当前调试的程序 (Ctrl+F2)  当前调试的程序 (Alt+F2)  运行选定的程序进行调试 (F9)  暂时停止被调试程序的执行 (F12)  单步进入被调试程序的 Call 中 (F

Fiverya的博客 998

Megatron单机多卡Qwen2.5:pre-train+sft

英伟达:https://github.com/NVIDIA/Megatron-LM/releases/tag/core_r0.8.0阿里:https://github.com/alibaba/Pai-Megatron-Patch/releases/tag/v0.10.2。

weixin_46873015的博客 2178

避坑指南:LAMMPS做GCMC模拟时,化学势mu和压力p到底怎么设?

本文详细解析了LAMMPS中巨正则蒙特卡洛(GCMC)模拟的关键参数设置,特别是化学势(mu)与压力(p)的正确计算方法。通过理论分析、实用公式和黄金法则,帮助用户避免常见误区,提升模拟精度和效率,适用于各类复杂体系的分子模拟研究。

weixin_42525289的博客 429

OD窗口介绍

快捷键详情跳转 OD:窗口分为 菜单界面 反汇编窗口 提示窗口 寄存器窗口 数据窗口 堆栈窗口 菜单界面 简述: L:显示调试信息,在程序意外结束或者产生异常的时候,可以在这里看到原因 E:模块信息,可以用于查看当前程序内所有模块的基址 M:内存信息,可以查看到目标数据在什么区段,访问权限是什么 T: 查看线程,可以在进行多线程调试的时候,挂起和恢复指定的某个或所有线程 W:窗口界面,会识别到应用程序的窗口信息。 H:用于查看内核对象 C:分析的时候使用的主窗口,可以查看很多信息 /:补丁窗口,能够显

qq_40591440的博客 5256

私彩视频开奖动画直播源码内部核心技术解析及修改可增加后台操控-持续更新文章!

其实在此很感谢能做出H5开奖系统的码农们,而我本人也喜欢分解此类的东西。 因为特殊原因,该东西本人就不做图片展示,以防他人商业化。 借用开奖摇奖代码首先分解首页index文件。代码如下:(后面持续在原有的作品上添加后台操作) 代码里写的//.....是我的注明代码的所需。 ​ <!DOCTYPE html> <html> <head> <...

yugua3837的博客 5995

OllyDbg基础教程

OllyDbg基础教程 工具栏 各种窗口切换 1.日志窗口(L): 2.模块窗口(E):查看每个模块的内存基址 3.内存窗口(M):查看每一个模块的段,所占用的内存区域 4.线程窗口(T):线程信息 5.窗口(W):查看程序的窗口句柄,窗口名,风格样式,回调函数等信息 6.句柄(H): 7.反汇编窗口( C):也就是我们的汇编代码显示窗口—很重要 8.补丁窗口(/): 9:堆栈窗口(K):可...

w_g3366的博客 1万+

SAP 行业扫盲系列之一:SAP 从业者的分类

本文简单介绍了 SAP 从业者的分类,限于笔者狭隘的视角,可能存在遗漏或者不恰当的地方,希望大家在评论区指出。 那些在知乎咨询上向我提问关于进入 SAP 行业建议的朋友们,也请大家提问时注明自己想具体从事 SAP 行业哪一类的工作,这样才能得到更让你们满意的回复。感谢阅读。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1589

OPPO 数据分析面试题及参考答案

如何设计共享单车数据库的各个字段? 对于共享单车的数据库设计,首先考虑用户相关的字段。用户表可以包含用户 ID,这是一个唯一标识符,用于区分不同用户;姓名,记录用户的真实姓名;联系方式,比如手机号码,方便在出现问题时联系用户;注册时间,记录用户何时开始使用共享单车服务;信用分数,用于衡量用户使用共享单车过程中的行为是否合规,比如是否按时归还车辆等。 车辆信息表要有车辆 ID,这是车辆的唯一标识;车辆类型,例如普通单车、电动单车等;投放时间,即车辆投放到市场的时间;车辆状态,包括是否可用(如正

大模型大数据攻城狮的专栏 1185

OllyDBG 破解入门教程

原链接:https://www.cnblogs.com/ECJTUACM-873284962/p/7653285.html 一、OllyDBG 的安装与配置 OllyDBG 版的发布版本是个 ZIP 压缩包,只要解压到一个目录下,运行 OllyDBG.exe 就可以了。汉化版的发布版本是个 RAR 压缩包,同样只需解压到一个目录下运行 OllyDBG.exe 即可: OllyDBG 中各个窗口的功能如上图。简单解释一下各个窗口的功能,更详细的内容可以参考 TT 小组翻译的中文帮助: 反汇编窗口:显示被调试

weixin_41454036的博客 4397

JavaScript(JS)、ECMAScript(ES)和TypeScript(TS)

JavaScript、ECMAScript和TypeScript是现代Web开发中不可或缺的技术。它们各自具有独特的特点和优势,相互补充,共同推动着Web开发的发展。了解它们的概念、特点、应用场景和发展历程,有助于我们更好地掌握和使用这些技术,提高开发效率,实现更高质量和更可靠的Web应用。

u013558123的博客 1718

OD用栈回溯法找程序流程点

前言看别人操作时, 人家能通过栈回溯,找到流程点(e.g. Show Dialog, Click Button) 我自己做的时候, 和人家的上下文不一样. 自己做了下试验, 原来必须要用trace into(CTRL+F11), 才行.记录程序启动后, 在流程点即将进行前, 在OD中先停住, 打开run trace, 再trace into, 然后在进行流程操作. 等流程进行完(e

博客标题不能为空 7175

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

OD使用笔记

Alt+F9: 直接从系统模块飞回程序模块 Ctrl+F9: 执行到当前函数的结尾 F4: 执行到选中的语句处 内存断点的利用: 在数据上下的断点,如果读取或写入该数据则会断下来。 在内存窗口右键选Search, 在ASCII上输入内容,然后输入搜索内容 搜索到后,找到地址 下内存断点后点击运行即可 下断点的方法: 1. 命令方式 2. 搜索API设断点: 给API设置断点,一旦调用就会断下 搜索机器码 搜索Jmp命令 搜索命令 点..

輚至消亡 1922

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

关于OD界面的基础

(MultiMedia Extensions,多媒体扩展):这是英特尔处理器的一组指令扩展,旨在加速多媒体和通信应用中的某些操作,例如图像和视频处理。例如,如果您要查看某个变量在内存中的存储情况,就可以在左下角指定该变量所在的内存地址来查看其十六进制和 ASCII 表示。这些寄存器区域显示了与这些特定指令集相关的寄存器的当前状态和值,有助于在调试过程中了解处理器的特定功能和运算的执行情况。它可能是数据段、堆、栈中的某个位置,不一定与当前执行的指令直接相关,而是您根据调试需求指定要查看其内容的特定地址。

m0_57836225的博客 4242

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

OD超详细快捷键

<br /><br />无论当前的OllyDbg窗口是什么,这些快捷键均有效:<br /><br />Ctrl+F2 - 重启程序,即重新启动被调试程序。如果当前没有调试的程序,OllyDbg会运行历史列表[history<br />list]中的第一个程序。程序重启后,将会删除所有内存断点和硬件断点。<br />译者注:从实际使用效果看,硬件断点在程序重启后并没有移除。<br /><br />Alt+F2 - 关闭,即关闭被调试程序。如果程序仍在运行,会弹出一个提示信息,询问您是否要关闭程序。<br />

1418

OD查看程序函数列表(CTRL+N)

Ctrl+N

hutao1101175783的专栏 1586

【Windows 逆向】OD 调试器工具 ( OD 附加进程 | OD 调试器面板简介 | 反汇编窗口 | 寄存器窗口 | 数据窗口 | 堆栈窗口 )

一、OD 附加进程、 二、OD 调试器面板简介 ( 反汇编窗口 | 寄存器窗口 | 数据窗口 | 堆栈窗口 )

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 5633

找游戏Call之另类方法:查看堆栈法

本人非此文作者,从QQ中复制而来。原文出自何处实在不在知。作者见了不允则请留言,我会在第一时间删除     Call的找法一直都是个不大不小让人头痛的问题,需要大量的汇编代码分析,还需要很多测试工作,当然还有一种变态的方法,那就是用OD断下后,把前前后后所有的call都测试一边,也能找到关键call,不过面对大量的call和无数次挂游戏,恐怕这个方法只能在理论上实现了。     那么是否有

4648

OD学习笔记

1、OD与IDA是两个常用工具。OD是动态分析,IDA是静态分析。 2、F2下断点,F3加载一个可执行程序。 3、Call *** 按F7可以进入该函数内部,Ctrl + F9运行至ret出,就可以返回程序了。 4、Alt + B打开断点编辑器,用于取消断点,del或者空格取消断点。

心之所向,身之所往 4109

恶意代码分析-第九章-OllyDbg

目录   笔记 实验 Lab 9-1 Lab 9-2 Lab 9-3 笔记 加载文件: 执行代码: Execute till Return -&gt; 在当前函数返回时暂停执行 -&gt; CTRL-F9 Execute til User Code -&gt;从库函数中出来回到user code -&gt; ALT-F9 单步跳过陷阱:               0...

每昔的博客 1514

第二十四课_堆栈图4

前言 这篇文章也说画堆栈图,不过内容跟之前的差不多,如果已经理解前面画堆栈图的内容,这篇文章大可不看。这篇文章只能说是对前面的巩固吧。其实本id之所以写这篇文章,只是想写写JCC。 因为只是想写写JCC,所以画堆栈图部分写得可能会比较简陋。 说明:可执行exe和源码已经放网盘,地址在文末。 具体步骤 1、把下载的yiDaChengXuYuan_stack4.exe拖到OD中打开。按Ctrl+G,在弹出的对话框中输入“401098”,在定位到的行按F2设置断点,然后点击上方蓝色的小三角按钮,让程序运

ELaXiaoSi的博客 384

OD(4)之libunwind打印堆栈信息

libunwind是一个用于确定程序的调用栈的便携式和高效的编程库。它最初是为了改善在IA-64上的Linux系统上的程序性能分析和错误调试,但后来被扩展到支持其他架构。libunwind项目始于2000年代初期,并且随着时间的推移,它已经被各种系统和架构所采纳。libunwind提供了一组API,允许程序在运行时查询和设置调用帧的状态,主要用于堆栈跟踪(stack unwinding)。这个功能对于异常处理、程序调试以及任何需要检查程序调用历史的场景都非常有用。便携性:支持多种处理器架构和操作系统。

梅花香自苦寒来,宝剑锋从磨砺出。 4447

1. OD-界面视图及基本快捷键操作,修改hello word

B:删除断点,空格快速切换禁止/打开 K:查看堆栈堆栈调用机制 M:搜索字符串 C:代码窗口 Ctrl+F8 等于 一下一下按F8,如果暂停按F12或者按界面暂停按钮。 test al,al ;与比较(and) xor ;异或指令 neg ebx ;取ebx补码 按减号(-):查看哪个call函数调...

墨痕诉清风的博客 1969
上一篇: SouceInsight v4 注册机源码
下一篇: IDA F5还原伪代码的小问题
FFE4
博客等级 码龄9年 234粉丝 166原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值