李沉舟 发表于 2018-3-21 23:29

P-Code引发的爆破惨案

{:6_218:}以前草草跑了两圈VB6运行库的PCODE解释引擎,很EASY+TYPICAL的一个基于堆栈的虚拟机结构。没有仔细看。今天微机课的时候一同班同学DOWDNLOAD了一个CM下来,问我如何干掉。我扫了一下DEDE,大汗,PCODE程序……今天是注定要亲密接触了。{:6_207:}嗯,写完这篇文章之后我发现是160个CrackMe里面第38号CrackMe的……真TM的是无处不在。







Private Sub Form_Initialize() '40DC38
'Data Table: 402AEC
loc_40DC34: global_76 = &H45A0
loc_40DC37: Exit Sub
End Sub



&H表示十六进制(和0x前缀,H后缀一个道理)。

-----------分割线-------------
首先尝试无脑爆破之。但是PCODE的机器码我没有研究过,嗯,网上也找不到资料。PASS掉。不能改机器码。然后,本人想到了改Handler。我真的要为我的机智点10086个赞了。{:6_215:}
把运行库从系统目录里面抠出来,修改后扔到CM的目录下。

VB5运行库在此。

loc_40E4DE: If ((CVar(Me.txtkey.Text) - var_94) = CVar(Len(Me.txtname.Text))) Then
loc_40E502:   MsgBox("Wow, you have found a correct key!", &H40, "Correct key", var_FC, var_11C)
loc_40E533:   MsgBox("Mail me, how you got it: CyberBlade@gmx.net ", &H40, "Correct key!", var_FC, var_11C)
loc_40E550:   Me.Command2.Caption = "Exit"
loc_40E55B: Else

大兄弟可还记得我们开头的时候贴出的代码?0x40E4DE,这里就是PCODE的机器码地址了。在上面下一个内存访问断点,中断在VB5运行库的FFree1Str Handler上。(实际爆破的时候不能直接改成无条件跳转,堆栈会不平衡)

7411E712    8A06            mov   al, byte ptr
7411E714    46            inc   esi
7411E715    FF2485 94ED1174 jmp   dword ptr

取操作码,指令流递增,从Handler表里面取地址。跳转之,没什么好解释的。凡Handler末尾必定是这段代码。接下来单步会走到BranchF Handler上。
7411D545    59            pop   ecx
7411D546    66:0BC9         or      cx, cx
7411D549^ 74 D9         je      short 7411D524

这里这个or cx,cx是什么意思呢?一般来说,只有0 or 自己才结果为0(ZF为0,JE跳转),其它数都是非0。
意思是说,这条指令的意思是,栈顶的数为False,我就跳,True就不跳。
步过Pop ecx后,把ecx修改为1,之后提示成功。

此时记录ESI的地址,0x40E4DF。

然后把VB5运行库扒拉出来。
WTF?居然还有绑定输入?直接全部清0,否则没有空间加区块头。




点上面菜单栏的保存图标,一路SAVE即可(上一个界面里的0x240和0x90记得改0)。然后加个区块。

换studype这个工具,LordPE只负责加区块头,我们要自己往后面补数据。很麻烦。



0x14D000是RVA地址。OllyDbg载入运行库。

刚刚因为我调试CM时看到运行库被装载到了推荐基址,就直接记了VA地址。在LOADDLL里面不出意外也会被装载到推荐基址,直接转到0x7411D546即可。
以下是补丁数据:



保存补丁即可。

保存后运行库扔到程序目录。提示成功。


Shark恒 发表于 2018-3-22 08:25

哈哈哈,66666,这智力我也给点10086个赞

syzh802618 发表于 2018-3-22 08:29

看花眼{:5_120:}

973204 发表于 2018-3-22 09:36

这个是好办法,虽然小白不懂!

caodaye 发表于 2018-3-25 00:47

看不懂 不过只有说6666666{:5_116:}

caodaye 发表于 2018-3-25 00:47

{:5_116:}只有说看不懂

kanxue2018 发表于 2018-3-25 13:04

非常好的教程,图文并茂,慢慢研究必有所收获

暴走哥 发表于 2018-3-25 16:59

以后慢慢来学习吧!

海天一色001 发表于 2018-3-26 14:14

虽然有些不太明白,还是感觉楼主真牛!!!

十文的十 发表于 2018-3-29 04:23

兄dei666
页: [1] 2 3
查看完整版本: P-Code引发的爆破惨案