本类共有 70 篇文章,今日更新 0

北斗nspack2.3 dll脱壳

[ 来源:http://www.91now.com/down/ | 作者: | 时间:2007-5-18 18:31:11 | 浏览: 人次 ]


-------------------------------------------------------------------------------- 
【破解作者】 stasi[DCM][BCG][DFCG][FCG][OCN][CZG][D.4s] 
【作者邮箱】 stasi@163.com 
【使用工具】 od  
【破解平台】 Win9x/NT/2000/XP 
【软件名称】 北斗nspack2.3 
【下载地址】 www.nsdsn.com 
【软件简介】 北斗nspack2.3 国产优秀加壳软件 
【软件大小】 5k 
【加壳方式】 nspack2.3 
【破解声明】 我是一只小菜鸟,偶得一点心得,愿与大家分享:) 
-------------------------------------------------------------------------------- 
【破解内容】 


下载了有两个版本的北斗2.3和2.6,2.6脱壳不能跨平台,就只有2.3可用。 
北斗加密dll,可以选择处理重定位表,直接在oep处脱壳后,找不到重定位表,说明对输出表动过手脚 


100045F8 R> 9C           pushfd             **** entry point 
100045F9   60           pushad 
100045FA   E8 00000000     call REALIGN.100045FF 
100045FF   5D           pop ebp 
10004600   B8 07000000     mov eax,7 
10004605   2BE8         sub ebp,eax 
10004607   8DB5 88FEFFFF   lea esi,dword ptr ss:[ebp-178] 
1000460D   8B06         mov eax,dword ptr ds:[esi] 
1000460F   83F8 00       cmp eax,0 
10004612   74 11         je short REALIGN.10004625 

0006FB6C   100045F8 offset REALIGN. 
0006FB70   0006FBA0 
0006FB74   0006FBAC 
0006FB78   0006FB8C 

hr 0006FB6C  

10004871   9D           popfd 
10004872   - E9 EAD2FFFF     jmp REALIGN.10001B61      
10004877   8BB5 3CFEFFFF   mov esi,dword ptr ss:[ebp-1C4] 
1000487D   0BF6         or esi,esi 
1000487F   0F84 97000000   je REALIGN.1000491C 

10001B61   /. 55         push ebp               **** oep=1B61    
10001B62   |. 8BEC       mov ebp,esp 
10001B64   |. 53         push ebx 
10001B65   |. 8B5D 08     mov ebx,dword ptr ss:[ebp+8] 
10001B68   |. 56         push esi 
10001B69   |. 8B75 0C     mov esi,dword ptr ss:[ebp+C] 
10001B6C   |. 57         push edi 
10001B6D   |. 8B7D 10     mov edi,dword ptr ss:[ebp+10] 
10001B70   |. 85F6       test esi,esi 
10001B72   |. 75 09       jnz short REALIGN.10001B7D 
10001B74   |. 833D 041C0010 >cmp dword ptr ds:[10001C04],0 


size=48 的输入表 

10001000 77903039 IMAGEHLP.ImageNtHeader 
10001004 00000000 
10001008 77E69168 KERNEL32.CloseHandle 
1000100C 77E6F2A6 KERNEL32.SetEndOfFile 
10001010 77E7C912 KERNEL32.DisableThreadLibraryCalls 
10001014 77E7D7CC KERNEL32.SetFilePointer 
10001018 77E757E2 KERNEL32.CreateFileA 
1000101C 77E732AF KERNEL32.GlobalFree 
10001020 77E716B4 KERNEL32.GlobalAlloc 
10001024 77E7154E KERNEL32.SetHandleCount 
10001028 77E6A63A KERNEL32.LoadResource 
1000102C 77E7D38D KERNEL32.FindResourceA 
10001030 00000000 
10001034 780014A9 
10001038 7800BD6A 
1000103C 78001DB0 
10001040 7800119B 
10001044 7801F4E5 
10001048 7803A670 


基址重定位表可手动修复: 

找到重定位代码 

1000108C 1000170B REALIGN.1000170B 
10001090 10001711 REALIGN.10001711 
1000109C 100019E9 REALIGN.100019E9 
100010A0 100019EF REALIGN.100019EF 
。 
。 
。 
1000446C 10001000 REALIGN.10001000 
100044B0 10001000 REALIGN.10001000 


自己构造基址重定位表: 

unsigned char data[320] = { 

0x00, 0x10, 0x00, 0x00, 0x30, 0x01, 0x00, 0x00, 0x8C, 0x30, 0x90, 0x30, 0x9C, 0x30, 0xA0, 0x30,  
0xBD, 0x30, 0xC3, 0x30, 0xEA, 0x30, 0x07, 0x31, 0x0E, 0x31, 0x15, 0x31, 0x3D, 0x31, 0x6F, 0x31,  
0x96, 0x31, 0x9B, 0x31, 0xBE, 0x31, 0xDE, 0x31, 0xE4, 0x31, 0xFD, 0x31, 0x26, 0x32, 0x77, 0x32,  
0x8D, 0x32, 0xAE, 0x32, 0xBD, 0x32, 0xC2, 0x32, 0xC8, 0x32, 0xCF, 0x32, 0xD9, 0x32, 0xE0, 0x32,  
0xEA, 0x32, 0x1D, 0x33, 0x25, 0x33, 0x2B, 0x33, 0x30, 0x33, 0x4D, 0x33, 0x63, 0x33, 0x75, 0x33,  
0x7B, 0x33, 0x83, 0x33, 0xA5, 0x33, 0xAD, 0x33, 0xB3, 0x33, 0xBE, 0x33, 0xC9, 0x33, 0xCF, 0x33,  
0xE6, 0x33, 0xEC, 0x33, 0xF4, 0x33, 0xFD, 0x33, 0x0B, 0x34, 0x11, 0x34, 0x1A, 0x34, 0x20, 0x34,  
0x2B, 0x34, 0x35, 0x34, 0x3E, 0x34, 0x47, 0x34, 0x4D, 0x34, 0x53, 0x34, 0x5F, 0x34, 0x81, 0x34,  
0x9A, 0x34, 0xA1, 0x34, 0xAC, 0x34, 0xB3, 0x34, 0xBF, 0x34, 0xC5, 0x34, 0xCA, 0x34, 0xD6, 0x34,  
0xE3, 0x34, 0xEA, 0x34, 0x11, 0x35, 0x17, 0x35, 0x20, 0x35, 0x35, 0x35, 0x3D, 0x35, 0x43, 0x35,  
0x49, 0x35, 0x4F, 0x35, 0x5F, 0x35, 0x6C, 0x35, 0x74, 0x35, 0x80, 0x35, 0xB5, 0x35, 0xC2, 0x35,  
0xCE, 0x35, 0xDD, 0x35, 0xE6, 0x35, 0xEE, 0x35, 0xF9, 0x35, 0x09, 0x36, 0x10, 0x36, 0x17, 0x36,  
0x1D, 0x36, 0x22, 0x36, 0x38, 0x36, 0x3E, 0x36, 0x47, 0x36, 0x4D, 0x36, 0x53, 0x36, 0x5C, 0x36,  
0x67, 0x36, 0x71, 0x36, 0x7A, 0x36, 0x80, 0x36, 0x86, 0x36, 0x8C, 0x36, 0x9D, 0x36, 0xAB, 0x36,  
0xB1, 0x36, 0xB8, 0x36, 0xC7, 0x36, 0xD4, 0x36, 0xDB, 0x36, 0xE9, 0x36, 0x01, 0x37, 0x17, 0x37,  
0x1D, 0x37, 0x29, 0x37, 0x2E, 0x37, 0x39, 0x37, 0x41, 0x37, 0x47, 0x37, 0x4F, 0x37, 0x96, 0x37,  
0x9B, 0x37, 0x17, 0x3A, 0xB2, 0x3A, 0xC0, 0x3A, 0xC8, 0x3A, 0xCE, 0x3A, 0xD9, 0x3A, 0xE6, 0x3A,  
0xEE, 0x3A, 0xFC, 0x3A, 0x01, 0x3B, 0x06, 0x3B, 0x0B, 0x3B, 0x16, 0x3B, 0x23, 0x3B, 0x2D, 0x3B,  
0x42, 0x3B, 0x4E, 0x3B, 0x54, 0x3B, 0x76, 0x3B, 0x88, 0x3B, 0xE4, 0x3B, 0x00, 0x3C, 0x98, 0x3C,  
0x00, 0x40, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x3C, 0x34, 0x6C, 0x34, 0x90, 0x34, 0xB0, 0x34 
}; 

基址重定位表有三部分组成: 
0x00, 0x10, 0x00, 0x00 是 VirtualAdress: 0x00001000  
0x30, 0x01, 0x00, 0x00 是 SizeOfBlock: 0x00000130   (0x130-0x8)/0x2=0x94 就是有148组 
0x8C, 0x30 是 重定位数组 08C是偏移 3是HIGHLOW定义 

同样: 

0x00, 0x40, 0x00, 0x00,是 VirtualAdress: 0x00004000  
0x10, 0x00, 0x00, 0x00 是 Si

[1] [2] 下一页

广告位