首页
社区
课程
招聘
[原创]VProtect1.XX-1.84 unpacker
发表于: 2011-3-1 12:24 15496

[原创]VProtect1.XX-1.84 unpacker

2011-3-1 12:24
15496

【文章标题】: VProtect1.XX-1.84 unpacker
【文章作者】: wuqing1501(笨笨鼠)
【作者邮箱】: 木有
【作者主页】: 木有
【作者QQ号】: 木有
【下载地址】: 自己搜索下载
【保护方式】: VProtect默认加壳
【使用工具】: 老三样
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
      在这里呢首先我先要感谢感谢NOOBY、KISSY和COOOLIE,因为KISSY和nooby 我学会了脱VMP用DLL修复的方法,通过研究NOOBY.DLL和kissy.dll我明白了这个DLL的原理,所以才有这篇文章。
      今天说下VProtect1.84以下版本的脱壳方法,其实我感觉脱VP的话,nooby在脚本区公布的那个主程序1.82的脱壳脚本可以说是相当的无敌,应该可以通杀1.82以下所有的版本,但是对于高版本的话,可能需要一些修改,但是这个我没有研究过所以在这里就不多说了。我现在说另外一种方法,相信大家都看过kissy牛脱VMP的视频吧?其实我的方法就是学习kissy牛还有NOOBY牛脱VMP用DLL修复IAT的方法,但是VP和VMP有区别,因为VMP在IAT的处理过程中,只使用了一种算法就是加法,而VP为了防止kissy.dll还有nooby.dll的使用,所以在1.84以及以前的版本中都使用了三种算法,那就是:相加、异或、取反。所以我们直接用脱VMP的方法去脱VP是不行的,那两个DLL的算法都是加法,所以我们要自己写个DLL,其实这个DLL的原理,相信使用过DLL修复的人都明白的原理还是很简单的,但是我是个菜鸟,不会编程,用易语言写那个DLL最后总是因为有个问题没有解决最后没有成功,最后还是拿到了kissy.dll的源码进行了修改,在这里我先十分感谢KISSY 和COOOLIE,所以我们现在要做的工作就是:修改KISSY脱VMP的脚本,修改COOOLIE的kissy.dll的源码。
      在这里我不公开kissy.dll的源码,只公开成品还有脚本,因为那个源码我基本上只修改了一下那个算法的地方所以其他的东西都还是原来的,在这里还请KISSY牛海涵。
  脚本:

  /*
  ///////////////////////////////////////////////////////////////////////////////
  脚本   : VP1.XX-Vprotect 1.84 Unpacker
  调试选项 : 1.设置 OllyDbg 忽略所有异常选项 
  	   2.使用海风月影全选项.
  	   3.去掉'选项-调试设置-地址-解析修饰符号名称' 前面的勾,然后重新打开OD.跑脚本.(必须)
             4.使用PhantOm保护DRX。
  工具 : OllyDbg1.1, ODBGScript 1.65
  感谢 : 感谢KISSY 的脚本,感谢苦力的DLL源码,感谢那些曾经帮助我的人!
  ////////////////////////////////////////////////////////////////////////////////////
  
  var getapi
  var write
  var addr
  var dword
  var vpro
  var rapi
  var dllname
  var apiname
  var imgbase
  var imgbasefromdisk
  var sizeofimg
  var tmp1
  var tmp2
  var tmp3
  var secbase
  var secsize
  var logfile
  var oep
  var fixtype
  var typeadd
  var typexor
  var typenot
  var vmiataddr
  mov logfile,"FakIat.txt"
  
  
  /////////////////////////
  //配置区
  /////////////////////////
  mov vmexit,008D21ED      //VM出口
  mov oep,0069C168         
  mov write,008AC492       //填充函数
  mov typeadd,008A8F41     //对IAT进行SUB处理的地址
  mov typexor,008AA673     //对IAT进行xor处理的地址
  mov typenot,008AC257     //对IAT进行not处理的地址
  /////////////////////////
  
  cmp $VERSION, "1.64"
  jb odbgver
  
  GMI eip, MODULEBASE
  mov imgbase, $RESULT
  mov tmp1, [imgbase+3C]
  add tmp1, imgbase
  mov signVA, tmp1
  mov imgbasefromdisk, [signVA+34]
  mov sizeofimg, [signVA+50]
  mov tmp1, signVA
  add tmp1, f8
  mov tmp2, 0
  mov tmp2, [signVA+6], 2
  wrta logfile,tmp2
  wrta logfile,"\r\n"
  
  last:
  mov secsize, [tmp1+8]
  mov tmp3, [tmp1+0C]
  add tmp3, imgbase
  mov secbase, tmp3
  wrta logfile,secbase
  wrta logfile,"\r\n"
  wrta logfile,secsize
  wrta logfile,"\r\n"
  cmp tmp2, 1
  je lab1
  add tmp1, 28
  sub tmp2, 1
  jmp last
  
  lab1:
  
  
  cmp imgbasefromdisk, imgbase
  je lab1_1
  jmp error
  
  lab1_1:
  bc
  
  start:
  bp vmexit
  cmp eip,oep
  je exit
  cmp eip,write
  je findkey
  cmp eip,typeadd
  je findkey
  cmp eip,typexor
  je findkey
  cmp eip,typenot
  je findkey
  esto
  len [ecx]
  cmp $RESULT,8
  jb start
  scmpi [ecx],"ole32.dll"
  je loopfix
  scmpi [ecx],"advapi32.dll"
  je loopfix
  scmpi [ecx],"user32.dll"
  je loopfix
  scmpi [ecx],"kernel32.dll"
  je loopfix
  cmp [ecx],"oleaut32.dll"
  je loopfix
  scmpi [ecx],"advapi32.dll"
  je loopfix
  cmp [ecx],"uxtheme.dll"
  je loopfix
  scmpi [ecx],"ws2help.dll"
  je loopfix
  cmp [ecx],"ws2_32.dll"
  je loopfix
  scmpi [ecx],"winspool.dll"
  je loopfix
  cmp [ecx],"MSCTFIME.dll"
  je loopfix
  scmpi [ecx],"shell32.dll"
  je loopfix
  cmp [ecx],"shlwapi.dll"
  je loopfix
  scmpi [ecx],"GDI32.dll"
  je loopfix
  cmp [ecx],"rpcrt4.dll"
  je loopfix
  scmpi [ecx],"secur32.dll"
  je loopfix
  cmp [ecx],"msvcrt.dll"
  je loopfix
  scmpi [ecx],"version.dll"
  je loopfix
  cmp [ecx],"comctl32.dll"
  je loopfix
  scmpi [ecx],"iphlpapi.dll"
  je loopfix
  cmp [ecx],"imagehlp.dll"
  je loopfix
  scmpi [ecx],"psapi.dll"
  je loopfix
  cmp [ecx],"msctf.dll"
  je loopfix
  scmpi [ecx],"msimg32.dll"
  je loopfix
  cmp [ecx],"imm32.dll"
  je loopfix
  scmpi [ecx],"comdlg32.dll"
  je loopfix
  scmpi [ecx],"ntdll.dll"
  jne start
  
  loopfix:
  esto
  bp typeadd
  bp typexor
  bp typenot
  bp oep
  len [ecx]
  cmp $RESULT,0 
  je loopfix
  sub $RESULT,4
  readstr [ecx],$RESULT
  mov dllname,$RESULT
  len [edx]
  cmp $RESULT,0 
  je loopfix
  readstr [edx],$RESULT
  mov apiname,$RESULT
  esto
  esto
  esto
  esto
  
  add eax,ecx
  add eax,7
  mov addr,eax
  mov dword,[addr+7]
  sub eax,7
  sub eax,ecx
  cmp dword,0
  je start
  mov fixtype,0
  wrta logfile,addr
  wrta logfile,","
  wrta logfile,dword
  wrta logfile,","
  wrta logfile,dllname
  wrta logfile,","
  wrta logfile,apiname
  wrta logfile,","
  wrta logfile,fixtype
  wrta logfile,"\r\n"
  jmp start
  
  
  goon:
  cmp eip,oep
  je exit
  bp typeadd
  bp typexor
  bp typenot
  bp write
  bp oep
  esto
  
  findkey:
  cmp eip,oep
  je exit
  cmp eip,typeadd
  je addkey
  cmp eip,typexor
  je xorkey
  cmp eip,typenot
  je notkey
  jmp goon
  
  addkey:
  mov fixtype,0
  mov dword,[eax+ecx+10]
  gn edx
  mov dllname,$RESULT_1
  mov apiname,$RESULT_2
  cmp $RESULT,0 
  je goon
  bc eip
  bp write
  esto
  bc eip
  mov addr,edx
  jmp writetxt2
  
  xorkey:
  mov fixtype,2
  mov dword,[eax+edx+10]
  gn ecx
  mov dllname,$RESULT_1
  mov apiname,$RESULT_2
  cmp $RESULT,0 
  je goon
  bc eip
  bp write
  esto
  bc eip
  mov addr,edx
  jmp writetxt2
  
  
  notkey:
  mov fixtype,1
  mov dword,edx
  gn edx
  mov dllname,$RESULT_1
  mov apiname,$RESULT_2
  cmp $RESULT,0 
  je goon
  bc eip
  bp write
  esto
  bc eip
  mov addr,edx
  
  writetxt2:
  wrta logfile,addr
  wrta logfile,","
  wrta logfile,dword
  wrta logfile,","
  wrta logfile,dllname
  wrta logfile,","
  wrta logfile,apiname
  wrta logfile,","
  wrta logfile,fixtype
  wrta logfile,"\r\n"
  jmp goon
  
  
  error:
  msg "dll不支持."
  RET
  
  odbgver:
  msg "ODSCR版本要大于1.65"
  ret
  
  exit:
  bc
  bphwc
  ret
  58              POP EAX                         
  8903            MOV DWORD PTR DS:[EBX],EAX
  8B07            MOV EAX,DWORD PTR DS:[EDI]
  8B5F 0C         MOV EBX,DWORD PTR DS:[EDI+C]
  8B4F 04         MOV ECX,DWORD PTR DS:[EDI+4]
  8B57 08         MOV EDX,DWORD PTR DS:[EDI+8]
  8B6F 14         MOV EBP,DWORD PTR DS:[EDI+14]
  8B77 18         MOV ESI,DWORD PTR DS:[EDI+18]
  FF77 24         PUSH DWORD PTR DS:[EDI+24]
  9D              POPFD
  8B67 10         MOV ESP,DWORD PTR DS:[EDI+10]
  C747 50 0000000>MOV DWORD PTR DS:[EDI+50],0
  8B7F 1C         MOV EDI,DWORD PTR DS:[EDI+1C]
  C3              RETN  

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 7
支持
分享
最新回复 (3)
雪    币: 61
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
膜拜,脱了别人的商业壳以表感谢
2011-3-1 13:05
0
雪    币: 23
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
呵呵。。。收藏啊!
2011-3-20 15:37
0
雪    币: 94
活跃值: (23)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
已收藏。
2011-3-21 18:08
0
游客
登录 | 注册 方可回帖
返回
//