• 标 题:论一次VB程序的破解(新手看过来) <---wolflh2002兄请看!! (4千字)
  • 作 者:侦探柯南[CCG]
  • 时 间:2001-9-22 20:18:54
  • 链 接:http://bbs.pediy.com

今天有人求小弟帮着破这个软件(技术交流),小弟看了看,原来是用VB编的,平时我是根本不动VB程序的,
我觉得VB编的好软件比较少小弟于昨日加入了CCG,正处于心情好时,也就对付一下了....
软件名称:OverNimble Localize Plus v1.2
软件主页:http://www.overnimble.com
软件功能:不详.
文章目的:讲解简单的脱壳和爆破!
破解结论:简单的VB程序不用smartcheck也能搞定.
用到工具:
1.trw2000 v1.23(娃娃版)
2.prodump v1.62
3.hiew v611
4.fileinfo v2.45
第一步:脱壳
    先是检测文件类型,用fileinfo发现是upx v1.2...
    于是打开prodump选中unpack中的upx,瞬间脱壳....

    小弟在这里有个疑惑,为什么脱了壳后的程序,在用trw跟踪时还是可以看到upx的领空???
    难道是我没有脱干净??可是我反汇编没问题呀???    请高手明示小弟..
第二步:爆破.
    我先试了getdlgitemtexta和messageboxa都不行(这是小弟的习惯,相信是个好习惯).
    于是就用法宝hmemcpy.

添入用户名:WINDOW,注册码:123ABC
断了下来后,先下bc,再下pmodule,后又有50下左右的F10来到:
00429B78: 8D4DE0                      lea      ecx,[ebp][-0020]
00429B7B: FF15FC064300                call      d,[0004306FC]
00429B81: E81AF8FFFF                  call    .0004293A0    <----关键的比较函数.
00429B8D: B904000280                  mov      ecx,080020004 ;
00429B92: B80A000000                  mov      eax,00000000A ;
00429B97: 894DA0                      mov      [ebp][-0060],ecx
00429B9A: 894598                      mov      [ebp][-0068],eax
00429B9D: 894DB0                      mov      [ebp][-0050],ecx
00429BA0: 8945A8                      mov      [ebp][-0058],eax
00429BA3: 894DC0                      mov      [ebp][-0040],ecx
00429BA6: 8945B8                      mov      [ebp][-0048],eax
00429BA9: 0F8424010000                je      .000429CD3  <---很关键的跳转.
00429BAF: 391D4CDC4200                cmp      [00042DC4C],ebx

于是该了这个关键的跳转,出现注册成功的对话框,点了确定后发现注册还是失败了.
程序一定在很多地方调用了比较函数,搞定它就差不多了,于是就重比较函数入手.
在00429b81下F8,按了70次F10左右来到.

0042947F: 51                          push      ecx
00429480: FF15FC034300                call      d,[0004303FC]    -----|
00429486: 83F80C                      cmp      eax,00C ;            |->VB函数,这里判断注册码
00429489: 756A                        jne      .0004294F5        -----|的长度,一定不要跳才行.
0042948B: 8D55DC                      lea      edx,[ebp][-0024]
0042948E: 8955C0                      mov      [ebp][-0040],edx
00429491: C745B808400000              mov      d,[ebp][-0048],000004008 ;
00429491: C745B808400000              mov      d,[ebp][-0048],000004008
00429498: 8D45B8                      lea      eax,[ebp][-0048]
0042949B: 50                          push      eax
0042949C: FF1544054300                call      d,[000430544]    ----|
004294A2: 6685C0                      test      ax,ax                |->VB函数,这里判断注册码
004294A5: 744E                        je      .0004294F5        ----|是不是数字,也不要跳.
004294A7: 8B4DDC                      mov      ecx,[ebp][-0024]
004294AA: 51                          push      ecx
004294AB: FF1500074300                call      d,[000430700]
004294B1: FF15A8064300                call      d,[0004306A8]    ----|
004294B7: 8945E0                      mov      [ebp][-0020],eax      |->注册码比较,我不熟VB
004294BA: 83F801                      cmp      eax,001 ;            |所以没有去找注册码.
004294BD: 7C36                        jl      .0004294F5        ----|不要跳.
004294BF: DB45E0                      fild      d,[ebp][-0020]
004294C2: DD5DA0                      fstp      q,[ebp][-0060]
004294C5: DD45A0                      fld      q,[ebp][-0060]
004294C8: DC1D181E4000                fcomp    q,[000401E18]
好了以后就没有向004294f5(出错的地方)跳的地方了.这样我们就爆破成功了.

第三步:手动修改成正式版.
不管你是用Hex edit,还是Unasm(我用的是hiew,主要是我中了病毒,别的工具都不能用了).
只需要该以下三个地方:
1.)00429489的jne------>90,90(即nop,空指令).
2.)004294a5同上.
3.)004294bd同上.
好了我们完成了....我的VB不好,就不去找注册码了.

组织:China Crack Group[CCG]
ID:柯南