首页
社区
课程
招聘
[求助]带狗跟FLY学脱HASP HL后遗留的问题
发表于: 2009-12-14 21:31 3123

[求助]带狗跟FLY学脱HASP HL后遗留的问题

2009-12-14 21:31
3123
【文章标题】: 带狗跟FLY学脱HASP HL后遗留的问题(已解决)
【文章作者】: 笨笨鼠
【软件名称】: 桥X博士3.2
【下载地址】: 自己搜索下载
【使用工具】: peid OD ...
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
  跟着FLY学脱HASP HL的狗壳,经过几天的努力调试最终没能战胜这个壳!汗!
  由于专业原因本人需要使用桥X博士软件,幸好在网上找到了模拟狗,版本是3.2的,
  以前接触的几个带狗的软件都是很简单的,都是对狗只判断是否有狗也就是EAX是否是1的问题,而这个软件则不一样了,用了狗壳,没有的狗的时候程序是不能运行的,
  还好我有模拟狗,不管怎么样可以让软件运行了!而且数据都是正确的,但是看过FLY写过的一篇脱HASP HL的壳后一直想学学怎么脱,刚好对软件查壳发现就是这个壳,于是就有了下文了!
  首先查壳
  PEID载入主程序查壳后发现是HASP HL Protection V1.X -> Aladdin   * Sign.By.fly *
  然后我们OD载入
  00615280 >  55              push ebp                             //OD载入后停在这里!                  
  00615281    8BEC            mov ebp,esp
  00615283    53              push ebx
  00615284    56              push esi
  00615285    57              push edi
  00615286    60              pushad
  00615287    8BC4            mov eax,esp
  00615289    A3 F45E6100     mov dword ptr ds:[615EF4],eax
  0061528E    B8 18556100     mov eax,原DXXain.00615518
  00615293    2B05 3C556100   sub eax,dword ptr ds:[61553C]        ; 原DXXain.00615518
  00615299    A3 3C556100     mov dword ptr ds:[61553C],eax
  0061529E    833D F05E6100 0>cmp dword ptr ds:[615EF0],0
  006152A5    74 15           je short 原DXXain.006152BC
  006152A7    8B0D F45E6100   mov ecx,dword ptr ds:[615EF4]
  006152AD    51              push ecx
  006152AE    FF15 F05E6100   call dword ptr ds:[615EF0]
  006152B4    83C4 04         add esp,4
  006152B7    E9 A5000000     jmp 原DXXain.00615361
  006152BC    68 DC5E6100     push 原DXXmain.00615EDC                ; ASCII "kernel32"
  006152C1    FF15 405F6100   call dword ptr ds:[<&KERNEL32.GetMod>; kernel32.GetModuleHandleA
  006152C7    A3 F8546100     mov dword ptr ds:[6154F8],eax
  006152CC    68 E85E6100     push 原DXXain.00615EE8                ; ASCII "user32"
  006152D1    FF15 405F6100   call dword ptr ds:[<&KERNEL32.GetMod>; kernel32.GetModuleHandleA
  006152D7    A3 FC546100     mov dword ptr ds:[6154FC],eax
  006152DC    8B15 445F6100   mov edx,dword ptr ds:[<&KERNEL32.Get>; kernel32.GetProcAddress
  
  然后下断吧
  
  bp GetModuleHandleA
  
  shift+f9 运行直到寄存窗口出现“dbdprj.dll”此时就是FLY所说的最佳DUMP的时机,为什么是这个DLL呢?
  
  由于本人菜鸟对这个也不是太懂,但是经过多次跟踪,发现软件运行过程中才将程序的代码解密的,未解密前0040000以后的代码都是乱码
  
  经过ctrl+F7多次调试,发现软件软件有一段代码是解码的具体的代码我就不贴了,因为我没有看懂代码是怎么解码的,但是当出现上面DLL的
  
  时候,发现00400000下面的代码都已经解码完毕!根据FLY的教程,我猜想软件肯定在运行中是先解码,然后对部分IAT进行加密处理,未了躲避IAT还原 还是利用FLY的方法
  
  吧!我的猜想是对bp GetModuleHandleA下段,当出现某个DLL的时候,软件肯定解码完毕,但是此时还未对IAT加密,所以就不停的试验,没出现一个DLL 就查看下00400000下面的代码是否解码完毕,
  
  当出现“dbdprj.dll”的时候 发现代码刚才解码完毕!因此猜想这里应该就是FLY所说的最佳DUMP点!
  
  在调试过程中 发现软件多次对ImportREC  OLLYDBEG 等字符串进行检查,还好,咱使用了修改版的OD并且使用了海大的SOD。。。
  
  EAX 004A2B26 ASCII "dbdprj.dll"
  ECX 004A2B26 ASCII "dbdprj.dll"
  EDX 004A1638 ASCII "|(
"
  EBX 0012FA8C
  ESP 0012F974
  EBP 0012F9C8
  ESI 007430C0 Dbmain.007430C0
  EDI 0073FCC0 Dbmain.0073FCC0
  EIP 7C80B741 kernel32.GetModuleHandleA
  C 0  ES 0023 32位 0(FFFFFFFF)
  P 0  CS 001B 32位 0(FFFFFFFF)
  A 0  SS 0023 32位 0(FFFFFFFF)
  Z 0  DS 0023 32位 0(FFFFFFFF)
  S 0  FS 003B 32位 7FFDF000(FFF)
  T 0  GS 0000 NULL
  
  此时该LORDPE上场了 ,好了dump下来,然后看EDX 004A1638 这个应该就是FLY说Import Table VA!
  
  下面寻找OEP吧
  
  删掉其他的断点直接在
  
   地址=00401000
   大小=00094000 (606208.)
   属主=Dbmain   00400000
   区段=.text
   包含=代码
   类型=Imag 01001002
   访问=R
   初始访问=RWE
  
  这个段下F2断点就可以了 shift+f9运行,OK 到达OEP
  
  00491560     6A 74              push 74                         //OEP
  00491562     68 00CF4900        push Dbmain.0049CF00
  00491567     E8 44020000        call Dbmain.004917B0
  0049156C     33DB               xor ebx,ebx
  0049156E     895D E0            mov dword ptr ss:[ebp-20],ebx
  00491571     53                 push ebx
  00491572     8B3D 28614900      mov edi,dword ptr ds:[496128]                      ; kernel32.GetModuleHandleA
  00491578     FFD7               call edi
  0049157A     66:8138 4D5A       cmp word ptr ds:[eax],5A4D
  0049157F     75 1F              jnz short Dbmain.004915A0
  00491581     8B48 3C            mov ecx,dword ptr ds:[eax+3C]
  00491584     03C8               add ecx,eax
  
  然后修复一下DUMP的软件吧,用LordPE修正dumped.exe的EntryPoint=00491560-00400000=00091560,Import Table RVA=004A1638-00400000=000A1638
  
  然后PEID查壳Microsoft Visual C++ 7.0 Method2,然后将脱壳后的软件与网上早就发布的桥X博士3.03脱壳后的文件(很简单就可以脱壳)比较一下
  
  OEP入口的代码和IAT都是正常的,因此认为壳应该算脱掉了,但是运行的时候却出问题了软件不能正常运行,汗,忙了半天也不知道是壳没有脱干净还是
  
  这个壳有了新的ANTI措施。本人太菜,经过N次调试,N次死机后也没有找到关键的地方。至少就只能到这里了,只能算跟着fly学习了一下脱这个壳 。
  
  脱壳后软件始终不能运行不知道问题所在特发帖,在此希望高人指点!
  
  脱壳后软件必须改名字为主程序的名字才能运行!

  这里给出网上的破解版的3.03的链接
  
  http://www.dbank.com/download.action?t=40&k=MzE1NjcyOA==&pcode=LCwxNjUwODAsMTY1MDgw&rnd=8806

  这里是3.2的主程序脱了壳的链接

  http://www.dbank.com/download.action?t=40&k=MzE1NjgyMg==&pcode=LCwxNjUwODAsMTY1MDgw&rnd=2813

  希望高人指点迷津!由于已经有了这个软件的模拟狗,可以正常运行,只需要高手能给解决下脱壳后软件不能运行的原因,另外主要是能给个解决的方案!
  
  软件已经有了模拟狗了,只为了学习脱壳,如果违规还劳驾斑竹删帖.
                                                       2009年12月14日 20:57:51

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 199
活跃值: (72)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
2
看的人这么多 怎么没有人回话呢  烦请高手指点下
2009-12-15 11:54
0
雪    币: 156
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
请问是啥狗啊?
2009-12-15 12:02
0
雪    币: 199
活跃值: (72)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
4
貌似题目中已经说了 HASP HL·
2009-12-15 12:12
0
雪    币: 199
活跃值: (72)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
5
问题已经解决 FLY给出的方法
004147FD    75 09                  jnz     short 00414808

NOP掉这行后就可以运行 但是退出仍有问题 继续 调试。。。
2009-12-20 17:50
0
雪    币: 217
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
这个是因为你 版本不同的原因。
2009-12-21 08:40
0
雪    币: 232
活跃值: (30)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
等最后一个字变换完后就可以DUMP出来,再改oep和IAT表
2009-12-28 11:23
0
雪    币: 232
活跃值: (30)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
很简单的,我的QQ:11951863
2009-12-28 11:25
0
雪    币: 51
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
放上模拟狗学习一下?
2010-1-11 20:42
0
游客
登录 | 注册 方可回帖
返回
//