CRACKME 3:来源于《逆向工程核心原理 第八章》

Cruehead-CrackMe-3保姆级教程 Cruehead-CrackMe-3.exe整体思路,保姆级教程 阅读详情

前言:算是第一次正规的逆向了吧,该程序用vba语言编写,逆向其算法。怎么说呢,这个程序逆向了大概三天,这三天考了三门期末,本来对期末真没有以前那种热情,该水水就水水,考完回来继续分析这个程序,在这上面的时间三天至少花了20个小时,从一开始一脸蒙蔽一窍不通到基本逆向出其算法和vba函数的作用,可以说是值得的,下面就总结一下自己的收获:

一、逆向前的准备工作:

  1. 了解其是什么语言编写,然后去查该语言的逆向心得。比如,我这次是逆向 vba程序,其显著特点是一个变量占12个字节,前2个字节特征,后面4个字节才是真正的值。我刚开始晚上完全不懂,真的很蒙蔽,怎么弄怎么不对。第二天早上才有灵感一查才知道,还发现了前两个字节的特征,比如,是整数,则为0002,这是一定要吸取的教训。

二、逆向过程中的心得:

  1. 逆向的核心是搞懂函数作用+栈帧的分布:着重强调栈帧,这个可以说四个小时前我还一脸蒙蔽,睡觉前忽然才想起这个,真是,基础不牢,地动山摇啊。所有的局部变量都存储在栈帧中。我们之前着重分析函数,太多函数,各种寄存器绕的头晕,其实,寄存器只是一个中转站,最终还是存储在栈帧中,所以,我们弄清每一个栈帧具体表示的变量,之后看汇编代码会轻松很多。就算一个栈帧可能有多个情况,我们只需要在代码调用前查看其是哪种情况就好。
  2. 函数分析:
    1. 若OD中给出函数名,则先百度该函数名了解其作用。
    2. 获取参数,看函数调用前的栈帧。
    3. 少数函数通过寄存器传入参数,比如 __vbavarForInit 中 n 值通过 ebx 传入,而 __vbavarMove则是 edx->ecx,这些都是你应该要注意的。
    4. 了解传入的是地址还是指针,往往前面有 lea,则是指针,确切的办法是一个个参数浏览一遍。
    5. 调试函数时,多注意对比内存地址变化,有些传入的指针就是函数结构的存储地址,观察。
  3. 未来学习方向:
    1. 先学好 OD 中的条件断点,比如某个内存改变,就断下来,这语法其实在调试过程中真的很方便,肉眼看真难受。
    2. 开始学 WINDOWS 的 PE结构,这是你需要明确的。

函数分析以及加密过程:

  1. 使用 vbaI4Var 将 i 的值 获取到寄存器 eax 中
  2. 利用存储在 eax中的 i 通过 rtcMidCharVar 获取 字符串特定的个字符(整个字符串存放在 [ebp-74])
  3. 通过 __vbaStrVarVal 函数获取该字符的ASCII码的内存地址 (直接指向该字符而不是字符变量)
  4. 通过 rtcAnsiValueBstr 获取该 ASCII码 值并保存在 eax 中(eax 直接存储着这个码)
  5. 通过 vbaVarAdd 函数实现 字符的ASCII码与 加密因子 64 相加
  6. 通过 rtcHexVarFromVar 来将计算结果转换为 UNICODE 形式
  7. 通过 _vbaBarCat 来将字符串连接在一起
    以上进行四次退出循环:
    得到的秘钥与用户的输入进行比较判断是否成立。

特征:

  1. 00000002 整数类型
  2. 00360008 字符串?字符? 指针类型

栈帧:
ebp - 24 整数 保存变量 i 的
ebp - 34 输入的密码 UNICODE形式
ebp - 44 指针 保存每次计算的UNICODE结果,A8" 第二次 “A8C9”,第三次 “A8C9DA”,最后用于比较
ebp - 74 指针 保存的字符串“Deverse”,
ebp - 54 指针 保存从 [ebp-0xac]获取的单个字符
整数 保存从 ebp - 9c 过来的add计算结果
ebp - 9c 整数 保存add的计算结果
指针 保存 add 计算结果的UNICODE 形式
指针 暂时保存CAT连接结果,最后送到 ebp-44
ebp - 0xac 整数 1. 保存每次获取的字符值 “D”、“e”、“v”、“e"的ASCII值
指针 2. 保存字符粘贴结果 即第一次 “A8” 第二次 “A8C9”,第三次 “A8C9DA”
ebp - DC 整数 保存加密因子 64
ebp - 134 整数 保存 i = i+t 的 t
ebp - 144 整数 保存 变量 n

Python 写的注册机:其实可以看出算法真的不难,但自己这水平,逆向起来就是另外一回事了。

strr = input("输入用户名")

i = 0
ans = ""
while i<4 :
    ans += str(hex(ord(strr[i])+0x64))
    i += 1

ans = ans.replace("0x", '').upper()
print(ans)
CrackMe3(简单循环算法) CrackMe来自/看雪/2007精华版CrackMe/序列号/逍遥风大牛 【详细过程】 PEID检查,发现是ASPack 2.11的壳,直接上ASPackDie秒破。 字符串查找关键点,找到一下代码处 算法开始:00458159 |. 55 push ebp ; 在这里下断 0045815A |. 68 9082450 阅读详情

相关推荐

Android 13 Hotseat定制化修改——001 hotseat布局方向

一.背景由于需求是需要自定义修改Hotseat,所以此篇文章是记录如何自定义修改hotseat的,应该可以覆盖大部分场景,修改点有修改hotseat布局方向,hotseat图标数量,hotseat图标大小,hotseat布局位置,hotseat图标禁止形成文件夹,hotseat图标禁止移动到Launcher...

Java_fenxiang的博客 1102

crackme 2

运行程序 这个程序要求我们找出程序的序列号,从单独输入Name来看,生成Serrial时才会用到Name字符串,输入合适的Name与Serial,按Check按钮,才会通过检查。 Visual Basic文件的特征 VB专用引擎。 VB文件使用名为MSVBVM60.dll的VB专用引擎。 Ex:显示消息框时,VB代码中要调用MsgBox()函数,其实,VB编辑器真正调用的时MSVBVM60.dll里的rtcMsgBox()函数,在该函数内部通过调用user32.dll里的MessageBoxW(

qq_39249347的博客 793

Docker启动安装nacos(详情讲解,全网最细)

docker安装nacos保姆级教程

ilvjiale的博客 8万+

VB逆向基础(一)

基本类型名称类型编号宽度实际值(首地址+0x08)Boolean0x0B2字节Byte0x111字节8位值Int0x022字节16位值Long0x034字节32位值Single0x044字节32位浮点型Double0x058字节64位浮点型String0x084字节32位字符串首地址加法push eax;加数1push ecx;加数2push edx;运算结果,也以eax当做返回值变量加法减法push eax;被减数push ecx。

W343051232的专栏 1593

具身智能与空天具身智能:从理论到实践的AIBOX技术革命

本文深入探讨了具身智能从理论到实践的发展,重点介绍了AIBOX技术如何作为边缘智能计算模块,为无人机、机器人等无人系统提供可进化的“大脑”。文章通过空天具身智能等应用场景,阐述了AIBOX在实现感知、决策、行动一体化闭环中的核心作用,并展望了其在协同智能与规模化部署中的未来挑战与机遇。

lll78的博客 765

5分钟搞定微服务架构图:手把手教你用Draw.io画出专业级设计

本文详细介绍了如何使用Draw.io快速绘制专业级微服务架构图。通过5分钟入门教程,掌握核心组件拖拽、连接线优化等技巧,提升系统设计可视化效率。特别适合需要快速呈现分布式系统架构的开发团队,利用内置微服务元素和分层展示功能,轻松创建清晰易懂的技术文档。

pz890123的博客 1238

VB程序逆向反汇编常见的函数(修改版)

VB程序逆向常用的函数 1) 数据类型转换: a) __vbaI2Str 将一个字符串转为8 位(1个字节)的数值形式(范围在 0 至 255 之间) 或2 个字节的数值形式(范围在 -32,768 到 32,767 之间)。 b)__vbaI4Str 将一个字符串转为长整型(4个字节)的数值形式(范围从-2,147,483,6482,147,483,...

LindaXu1220的博客 803

NXP S32K3 Safety软件生态全解析:RTD、SPD、SAF、SCST到底怎么选?

本文深入解析NXP S32K3系列MCU的安全软件生态,详细对比RTD、SPD、SAF和SCST四大组件的功能定位与选型策略。针对不同ASIL等级需求,提供从架构设计到工程实践的完整解决方案,帮助开发者高效实现功能安全认证,优化汽车电子系统的安全性与可靠性。

weixin_42524226的博客 323

【逆向工程核心原理】第八章笔记——abex‘crackme #2原理分析及如何计算序列号

F9:断点之间的运行,F8:逐步调试0040123D:入口点的指令733735A4属于WindowsAPI函数的代码触发事件找到对应的用户代码用字符串检索法找到对应错误语句,设置断点运行程序LEA : LoadEffectiveAddress载入有效地址,把后面值的地址传到前面。猜测可能比较EDX,EAX。在00403321,右边框中EAX可跟踪dump。Dump-右击-long命令:显示数据为32位地址和十六进制的数值,并尝试将十六进制的数值当作地址进行解析可变长字符串。

wuwuhe99的博客 668

PythonWeb开发框架—Django之工程创建和models的定义和增删改查

文章介绍了Django工程的创建、models的定义和增删改查

weixin_42476668的博客 990

【网络与爬虫 53】Scrapy-Prometheus实战指南:打造企业级爬虫监控体系的终极解决方案

本文深入探讨Scrapy-Prometheus集成技术,通过费曼学习法从监控痛点出发,详细讲解如何在Scrapy爬虫中集成Prometheus指标收集系统。涵盖从基础配置到企业级监控体系的完整实战指南,帮助开发者构建可观测性强、可维护性高的分布式爬虫监控平台,实现爬虫性能的精准监控和智能告警。

熵数实验室 1584

CrackMe160 学习笔记 之 017

前言 先附上一致破解后的图。 做这个CrackMe还是花了我不少时间的。 确实难度上比其他几个有所上升。 算法本身并不难,主要是字符串并没有明文比较,以及不断套娃。 虽然这个套娃并没做什么复杂的操作,调试起来也挺心累的。 思路 首先调试程序的程序就会发现有个SMART CHECK的弹窗阻碍调试,绕过即可,下面会给绕过方法。 观察验证函数 00404E27 . FF15 6C104000 ...

无 775

SAP OData 开发从入门到提高教程的目录

笔者 18 年的 SAP 技术开发生涯,对 SAP OData 服务的开发,测试,发布,部署,测试,及基于各种不同 SAP 技术实现的 OData 服务的幕后技术实现细节和使用场合,均有着深入的研究。

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

7-3 学习打卡(12.5)

Week of 11.29 To do list: 1. Buu第二页剩下三题淦完 第三页继续往下做 2. 西湖论剑复现 深育杯复现 3. 看琢石成器为主 逆向工程为辅 4. 准备周末比赛的AWD(简单学学)

weixin_50166464的博客 590

深度学习工具包 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&#39;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(&#39;DeepLearnToolbox&#39;));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(&#39;state&#39;,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&#39;); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand(&#39;state&#39;,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 = &#39;sigm&#39;;%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, &#39;Too big error&#39;);```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(&#39;state&#39;,0)sae = saesetup([784 100]);sae.ae{1}.activation_function = &#39;sigm&#39;;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)&#39;)% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;;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, &#39;Too big error&#39;);```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x&#39;,28,28,60000))/255;test_x = double(reshape(test_x&#39;,28,28,10000))/255;train_y = double(train_y&#39;);test_y = double(test_y&#39;);%% 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&#39;ll get around 1.2% errorrand(&#39;state&#39;,0)cnn.layers = { struct(&#39;type&#39;, &#39;i&#39;) %input layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 6, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %sub sampling layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 12, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 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, &#39;Too big error&#39;);```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(&#39;state&#39;,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, &#39;Too big error&#39;);%% ex2 neural net with L2 weight decayrand(&#39;state&#39;,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, &#39;Too big error&#39;);%% ex3 neural net with dropoutrand(&#39;state&#39;,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, &#39;Too big error&#39;);%% ex4 neural net with sigmoid activation functionrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;; % 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, &#39;Too big error&#39;);%% ex5 plotting functionalityrand(&#39;state&#39;,0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = &#39;softmax&#39;; % 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, &#39;Too big error&#39;);%% 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(&#39;state&#39;,0)nn = nnsetup([784 20 10]); nn.output = &#39;softmax&#39;; % 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, &#39;Too big error&#39;);```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

VB程序逆向反汇编常见的函数

VB程序逆向常用的函数 1) 数据类型转换: a) __vbaI2Str 将一个字符串转为8 位(1个字节)的数值形式(范围在 0 至 255 之间) 或2 个字节的数值形式(范围在 -32,768 到 32,767 之间)。 b)__vbaI4Str 将一个字符串转为长整型(4个字节)的数值形式(范围从-2,147,483,6482,147,483,647) c)__vbar4Str 将一个字符串转为单精度单精度浮点型(4个字节)的数值形式 d)__vbar8Str 将一个字符串转为双...

chinaherolts2008的博客 1303

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

《逆向工程核心原理》第八章

前言 了解VB文件特征 分析crackme 预备知识 文字文本(literal-text)运算符(<>)把一个或多个字符和符号组合成一个文字文本,以防止预处理程序把列表中的成员解释为独立的参数。 #30h 表示立即数寻址 替换运算符(&)解析对宏参数名的有歧义的引用。 了解VB文件特征 打开VB文件,找到启动代码 PUSH 00401E14,把RT_MainStruct结构体压入栈 CALL <JMP.&MSVBVM60.#100> 分两部分,call指

weixin_41748164的博客 250

crackme--Cruehead-CrackMe-3

总结算法:程序是一个KeyFile类型,需要一个文件存在才能成功破解。校验值如果与文件中的第15位到18位相同,那么就破解成功。破解可以按照它给的要求去完成这么一个Key文件,又或者是找到关键跳转点对其进行强制跳转或NOP填充的修改。下面就是按照要求的一段VB代码,VB的逻辑有些乱,看着感觉有些不对。将异或后的值累加,再将累加和与12345678进行异或,如果这异或的结果与字符串之后四位的值相等就破解成功。基本就是重复一遍算法,然后将前14位得到的结果补充到后四位上,来完成文件的创建。之后对进入函数查看。

qq_20254219的博客 540

CrackMe160 学习笔记 之 060

前言 这是个VB程序,通过对输入字符串运算来判断。 思路 关键数据初始化 00402B1E . C745 B4 B96DA>mov dword ptr [ebp-4C], 0AF6DB9 00402B25 . C745 B8 FFFFF>mov dword ptr [ebp-48], 7FFFFFFF 00402B2C . C745 E0 52000&...

无 383

160个creakme之022

暴力破解 先拖进Exeinfope查看,VB写的,没加壳 直接用od打开,右键,搜索字符串,可以看到注册成功的字符串 跳转到该处,往上找,我们能看到有个跳转,正好把正确结果跳过去,我们把它nop掉,爆破完成 算法分析 既然是VB程序,那直接拖到VBDecompiler里分析一下,找到按钮事件处 可以看到按钮先调用了一个函数,这个函数估计是个关键,再看看这个函数 应该是对一个字符串取出好几个字符然后拼接成一个字符串,然后好像是一个比较,我直接在od里定位到字符串操作那。 0040362E .

宗泽的博客 449

软件破解中常用API

原生程序开发者,破解 在软件破解中,常用软件破解方法就是下断点快速找事件,在命令行BP下断点,shift+f9找事件然后再alt+f9返回。   快捷方法,ctrl+A分析代码。ctrl+N 找要下断的API函数。右键>查看调用结构。 然后分别F2下断,shift+F9运行。直接就可以看到不用alt+f9返回。即用BPX。 破解或者脱壳都ctrl+A分析一下这样比较好分析

蓝叶菱的专栏 1435

VB的一些函数

在逆一个crackme,vb写的,注册成功,标签上有提示,注册失败,标签上无提示,对于VB程序的套路,我还是不太熟悉, 贴上一些VB函数   00401000 >72A49841 msvbvm60.__vbaVarTstGt 00401004 >72A477EA msvbvm60.__vbaVarSub 00401008 >72A20507 msvbvm60.__vbaStrI2

LLC 2387

Crackme9-笔记

链接:https://www.52pojie.cn/thread-615320-1-1.html https://www.52pojie.cn/thread-265789-1-1.html 【这个感觉还是没有理解透彻……以后再弄】 程序是VB,表示不会 1、搜索关键字/堆栈平衡都可以找到关键跳转,直接nop掉即可。 2、看不懂程序,只看到了有很多的函数_vbaVarForInit、r...

I have a dream 494

vb 程序破解

WARNING: 此文章非常长,如果你感兴趣但是没耐心看完,可以做个标记然后按浏览器的关闭按钮,等到下次有兴趣了再看。这里我尽量多和详细地解释了VB程序的破解(其实也可看到反破解)的相关东西,把一个简单的VB计时器程序研究透了,对于VB破解应有较大帮助,如果觉得无用的不要喷,谢谢!可能包含错误认识,如有错误欢迎指出。 VB程序也是一个非常有趣的东西,你去看VB的主程序,是用Microsoft V

qq_35746383的博客 4701

变体类型在循环中的测试

使用下面的代码进行测试Dim i As Long, a As LongPrivate Sub Command1_Click()For i = 1 To 10    a = a + 2Next iEnd Sub使用SC找到Command1的入口点,OD进行调试,发现循环部分的反汇编是下面的样子004019CD   > 8BD1           MOV EDX,ECX004019CF   . 8B

冰痕工作室 1400

vb函数列表

 Variant 变量的内部表示:_______________________________________________________________符号常量 值 内部表示 字节数V_EMPTY 0 EmptyV_NULL 1 NullV_INTEGER 2 Interger 2V_LONG 3 Long 4V_SINGLE 4 Single 4V_D

1948
上一篇: CRACKME 2 : 通过OD了解 栈帧 的使用过程
下一篇: Mac系统切换机械键盘win和alt键
OneTrianee
博客等级 码龄9年 32粉丝 152原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值