首页
社区
课程
招聘
netsowell新壳之脱壳 & 脱壳机制作
发表于: 2006-7-4 22:32 8618

netsowell新壳之脱壳 & 脱壳机制作

2006-7-4 22:32
8618

1.0 前言
========

想想也好久没写过什么东西了,没有花指令和反调试,
所以比较简单就写一个。

1.1 寻找 IAT
============

首先用 OllyDbg 载入:

01001000 >  60              PUSHA
01001001    6A 00           PUSH    0
01001003    E8 00000000     CALL    01001008
01001008    55              PUSH    EBP
01001009    8BEC            MOV     EBP, ESP
0100100B    81EC 20020000   SUB     ESP, 220
01001011    53              PUSH    EBX
01001012    56              PUSH    ESI
01001013    57              PUSH    EDI                              ; ntdll.7C930738
01001014    8DBD E0FDFFFF   LEA     EDI, [EBP-220]
0100101A    B9 88000000     MOV     ECX, 88
0100101F    B8 CCCCCCCC     MOV     EAX, CCCCCCCC
01001024    F3:AB           REP     STOS DWORD PTR ES:[EDI]
01001026    C745 F8 0000000>MOV     DWORD PTR [EBP-8], 0
0100102D    8B45 08         MOV     EAX, [EBP+8]                     ; notepad.<ModuleEntryPoint>
01001030    8985 E0FDFFFF   MOV     [EBP-220], EAX
00A01F41    E8 00000000     CALL    00A01F46
00A01F46    58              POP     EAX                              ; kernel32.7C816D4F
00A01F47    2D 461FA000     SUB     EAX, 0A01F46
00A01F4C    8B9D 74FCFFFF   MOV     EBX, [EBP-38C]
00A01F52    035D 08         ADD     EBX, [EBP+8]                     ; notepad.<ModuleEntryPoint>
00A01F55    8998 621FA000   MOV     [EAX+A01F62], EBX
00A01F5B    C9              LEAVE
00A01F5C    C9              LEAVE
00A01F5D    83C4 10         ADD     ESP, 10
00A01F60    61              POPA
00A01F61    68 9D730001     PUSH    100739D                          ; 中断在这里
00A01F66    C3              RETN


0100739D    6A 70           PUSH    70
0100739F    68 98180001     PUSH    01001898
010073A4    E8 BF010000     CALL    01007568
010073A9    33DB            XOR     EBX, EBX
010073AB    53              PUSH    EBX
010073AC    8B3D CC100001   MOV     EDI, [10010CC]                   ; 就这个吧
010073B2    FFD7            CALL    EDI                              ; ntdll.7C930738


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

收藏
免费 7
支持
分享
最新回复 (13)
雪    币: 50161
活跃值: (20670)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
2
forgot开学就上高三了吧,呵~这个暑假疯狂一把
2006-7-4 22:38
0
雪    币: 98857
活跃值: (201079)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
3
2006-7-4 22:38
0
雪    币: 146
活跃值: (33)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
4
最初由 kanxue 发布
forgot开学就上高三了吧,呵~这个暑假疯狂一把


真这么牛?哪位大哥介绍下他?
forgot弟弟自己介绍下?
2006-7-4 23:17
0
雪    币: 313
活跃值: (250)
能力值: ( LV9,RANK:650 )
在线值:
发帖
回帖
粉丝
5
netsowell新壳原先加的是记事本,用一个好的记事本IAT修复DUMP的文件就OK了。
虽后netsowell又加了一个,我就无能为力,想写脚本又不懂。只能看着IAT在几个常数之间变来变去最后还是到JMP [ESP-40h]处。
今天看到楼主的分析,又有信心去学习研究了。
2006-7-5 07:52
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
原来是个小孩

不错不错
2006-7-5 10:19
0
雪    币: 342
活跃值: (323)
能力值: ( LV9,RANK:450 )
在线值:
发帖
回帖
粉丝
7
在虚拟机的win98下,不能再用jmp [esp-40h]了,还有一位大牛的修复放案是Hook GetProcAddress.对于壳中出现重复的代码这点,以后肯定是不会一直这样规律的。
现在的IAT,这样就能兼容虚拟机中的晕98
/*950000*/  push    ebp
/*950001*/  mov     ebp, esp
/*950003*/  pushad
/*950004*/  pushfd
/*950005*/  mov     eax, [ebp+8]
/*95000B*/  xor     eax, 1B923724
/*950011*/  cmp     eax, 21A3520
/*950017*/  jnz     009500D5
/*95001D*/  call    00950038
/*950022*/  call    0054F005
/*950027*/  popfd
/*950028*/  popad
/*950029*/  mov     esp, ebp
/*95002B*/  pop     ebp
/*95002C*/  add     esp, 14
/*950032*/  jmp     [5BFDB7FA]
/*950038*/  push    72616843
/*95003D*/  push    250000
/*950042*/  push    6C6C642E
/*950047*/  push    32334C45
/*95004C*/  push    4E52454B
/*950051*/  push    esp
/*950052*/  mov     eax, [ebp+10]
/*950058*/  xor     eax, 19880620
/*95005E*/  call    eax
/*950060*/  cmp     eax, 0
/*950066*/  jnz     0095007B
/*95006C*/  push    esp
/*95006D*/  mov     eax, [ebp+14]
/*950073*/  xor     eax, 19870303
/*950079*/  call    eax
/*95007B*/  add     esp, 14
/*950081*/  push    7274736C
/*950086*/  push    2E40079
/*95008B*/  push    726F6D65
/*950090*/  push    4D65766F
/*950095*/  push    4D6C7452
/*95009A*/  push    esp
/*95009B*/  push    eax
/*95009C*/  mov     eax, [ebp+C]
/*9500A2*/  xor     eax, 86667342
/*9500A8*/  call    [eax]
/*9500AA*/  add     esp, 14
/*9500B0*/  pop     esi
/*9500B1*/  mov     [esi], eax
/*9500B3*/  call    009500B8
/*9500B8*/  pop     eax
/*9500B9*/  sub     eax, 0B3
/*9500BF*/  mov     [eax+2F], esi
/*9500C5*/  popfd
/*9500C6*/  popad
/*9500C7*/  mov     esp, ebp
/*9500C9*/  pop     ebp
/*9500CA*/  add     esp, 14
/*9500D0*/  jmp     00950032
2006-7-5 12:41
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
8
我承认。。。。我耍手段了,不能一次把自己全部暴露。
2006-7-5 12:44
0
雪    币: 342
活跃值: (323)
能力值: ( LV9,RANK:450 )
在线值:
发帖
回帖
粉丝
9
我比较推荐Hook GetProcAddress .这样的话,完全可以不用再搜索代码了。
2006-7-5 12:48
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
10
主要是我的iat修复代码是独立在hook构架上了。
移动位置才能,不过我懒。

其实根本不必考虑什么代码,hook,只要堆栈被恢复了,就是api
2006-7-5 12:57
0
雪    币: 254
活跃值: (126)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
11
放暑假真好
2006-7-5 13:15
0
雪    币: 98857
活跃值: (201079)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
12
最初由 heXer 发布
放暑假真好


你没有暑假的说
2006-7-5 14:06
0
雪    币: 175
活跃值: (2621)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
楼主是个脱壳强人。
2006-7-5 18:51
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
netsowell ???
2006-7-5 20:17
0
游客
登录 | 注册 方可回帖
返回
//