160个crakeme之003AfKayAs.2**与算法分析及4C法去掉NAG

本文分成两部分 一部分是**与算法分析 第二部分是4C法去掉启动时的NAG

 

第一部分:

**

160个crakeme之003AfKayAs.2**与算法分析及4C法去掉NAG

 

 

160个crakeme之003AfKayAs.2**与算法分析及4C法去掉NAG

 

查壳 无壳VB程序

160个crakeme之003AfKayAs.2**与算法分析及4C法去掉NAG

 

载入OD

点击否

160个crakeme之003AfKayAs.2**与算法分析及4C法去掉NAG

还是搜索字符串(用来定位关键代码的最直接方式)

 

160个crakeme之003AfKayAs.2**与算法分析及4C法去掉NAG

双击 you get it 字符串进入反汇编窗口 先大致分析下结构

160个crakeme之003AfKayAs.2**与算法分析及4C法去掉NAG

 

向上一直翻 会找到段首的(这里也可以直接在je处下断点 不过为保险起见 建议段首下个断点)

160个crakeme之003AfKayAs.2**与算法分析及4C法去掉NAG

 

 

下好断点后 不要急 F8单步慢慢向下 进行分析 最后还是来到了 je处

160个crakeme之003AfKayAs.2**与算法分析及4C法去掉NAG

修改Z标志位为0 使跳转变为未实现 即可成功

160个crakeme之003AfKayAs.2**与算法分析及4C法去掉NAG

 

 

所以我们只需要将je跳转nop掉即可成功**

 

 

选中je这行 鼠标右键 二进制使用nop填充 保存到可执行文件 全部复制 重命名即可

 

 

关于算法分析:

    https://blog.****.net/u011027286/article/details/76427714?locationNum=3&fps=1

    https://www.52pojie.cn/thread-403814-1-1.html

第二部分:

去掉启动程序时的弹窗(他延迟也太高了 烦 那就搞掉他)

160个crakeme之003AfKayAs.2**与算法分析及4C法去掉NAG

 

还是载入OD

 

160个crakeme之003AfKayAs.2**与算法分析及4C法去掉NAG

 

直接看入口点

 

VB程序有个特点-入口点处都是一个PUSH指令,然后一个CALL指令,看JMP 后面跟的MSVBVM50,

结合第一部分PEiD查壳结果可以断定这个程序是VB5.0编写的,PUSH将要压入堆栈的是004067D4,现在我们在数据窗口中定位到这个地址

(如果你遇到的不是这种情况的话,那么该程序可能被加过壳)

 

选中push AfKayAs_.004067D4这一行 右键数据窗口跟随 选择立即数

 

160个crakeme之003AfKayAs.2**与算法分析及4C法去掉NAG

 

点中数据窗口中任意一个位置 接着Ctrl+G

 

160个crakeme之003AfKayAs.2**与算法分析及4C法去掉NAG

 

点击OK

 

160个crakeme之003AfKayAs.2**与算法分析及4C法去掉NAG

接着数据窗口跟踪68684000

(选中他 右键数据窗口中跟随DWORD)

 

160个crakeme之003AfKayAs.2**与算法分析及4C法去掉NAG

这里我们可以看到两块类似的数据,每块50(十六进制)个字节的长度,每块数据的第24(十六进制)个字节处都有一个标志。该标志指定了每块代码出现的顺序

 

可以看到第一块的中标志是00,表示该部分代码将首先执行,而第二块中的01表示随后才会执行,所以这里我们将各两个标志的值颠倒一下

右键二进制编辑 01改00,00改01,保存文件

 

这样首先弹出的就是主窗口了 然后才是NAG窗口

这种方法叫做4C法去VB程序NAG窗口

 

参考自:

https://www.52pojie.cn/forum.php?mod=viewthread&tid=612982