首页
社区
课程
招聘
(高手就不要看了!)莱鸟脱Aspr2.11 SKE+修复stolen code---莱鸟脱文第二篇[原创]
发表于: 2006-3-8 09:39 65734

(高手就不要看了!)莱鸟脱Aspr2.11 SKE+修复stolen code---莱鸟脱文第二篇[原创]

2006-3-8 09:39
65734
收藏
免费 7
支持
分享
最新回复 (163)
雪    币: 208
活跃值: (41)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
76
011802F3    55              push    ebp
011802F4    EB 02           jmp     short 011802F8
011802F6    CD20 1BEA8BEC   vxdjump EC8BEA1B
011802FC    6A FF           push    -1
011802FE    50              push    eax
011802FF    66:9C           pushfw
01180301    53              push    ebx
01180302    81DB E8A90959   sbb     ebx, 5909A9E8
01180308    81F3 4060C549   xor     ebx, 49C56040
0118030E    8D5C24 1D       lea     ebx, [esp+1D]
01180312    EB 01           jmp     short 01180315
01180314    E8 8D5C2BE3     call    E4435FA6
01180319    EB 02           jmp     short 0118031D
0118031B    CD20 2BDD8D5B   vxdjump 5B8DDD2B
01180321    06              push    es
01180322    36:EB 01        jmp     short 01180326
01180325    9A 68003A4E 008>call    far 8F00:4E3A0068
0118032C    035B 66         add     ebx, [ebx+66]
0118032F    9D              popfd
01180330    E9 6C010000     jmp     011804A1
01180335    68 7C041801     push    118047C
0118033A    E8 C1FC0500     call    011E0000
0118033F    56              push    esi
01180340    66:9C           pushfw
01180342    51              push    ecx
01180343    33CD            xor     ecx, ebp

这个是OEP,也不知道找对了没有。
我用OD dump出来时,选择Rebuild import,选项1dump出来是程序错误,选项2/LoadPE完整转存/OD不选择Rebuild import dump出来都是C000005错误;后面三种用importRec修复后,和第一种报一样错误。
目前我还没有研究到VM代码那块,很是郁闷。

下面这个是记事本的OEP:
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]                   ; kernel32.GetModuleHandleA
010073B2    FFD7            call    edi
010073B4    66:8138 4D5A    cmp     word ptr [eax], 5A4D
010073B9    75 1F           jnz     short 010073DA
010073BB    8B48 3C         mov     ecx, [eax+3C]
010073BE    03C8            add     ecx, eax
010073C0    8139 50450000   cmp     dword ptr [ecx], 4550
010073C6    75 12           jnz     short 010073DA
010073C8    0FB741 18       movzx   eax, word ptr [ecx+18]
010073CC    3D 0B010000     cmp     eax, 10B
010073D1    74 1F           je      short 010073F2
010073D3    3D 0B020000     cmp     eax, 20B
010073D8    74 05           je      short 010073DF
010073DA    895D E4         mov     [ebp-1C], ebx
010073DD    EB 27           jmp     short 01007406
010073DF    83B9 84000000 0>cmp     dword ptr [ecx+84], 0E
010073E6  ^ 76 F2           jbe     short 010073DA
010073E8    33C0            xor     eax, eax
010073EA    3999 F8000000   cmp     [ecx+F8], ebx
010073F0    EB 0E           jmp     short 01007400

dump操作和上面的一样,直接dump出来执行是C0000005错误,修复后不能运行,双击后没反应,OD载入修复后的程序,跟了一会儿进一个函数,再F7,进到这儿了:
010070D4      8BFF          mov     edi, edi                         ;  kernel32.GetModuleHandleA
010070D6      55            db      55                               ;  CHAR 'U'
010070D7      8B            db      8B
010070D8      EC            db      EC
010070D9      83            db      83
010070DA      EC            db      EC
010070DB      10            db      10
010070DC      A1            db      A1
010070DD      04960001      dd      od_dump_.01009604
010070E1      85            db      85
010070E2      C0            db      C0
010070E3      74            db      74                               ;  CHAR 't'
010070E4      07            db      07
010070E5      3D            db      3D                               ;  CHAR '='
010070E6      40            db      40                               ;  CHAR '@'
010070E7      BB            db      BB
010070E8      00            db      00
010070E9      00            db      00
010070EA      75            db      75                               ;  CHAR 'u'
010070EB      4D            db      4D                               ;  CHAR 'M'
010070EC      56            db      56                               ;  CHAR 'V'
010070ED      8D            db      8D
010070EE      45            db      45                               ;  CHAR 'E'
010070EF      F8            db      F8
010070F0      50            db      50                               ;  CHAR 'P'
后面再F8,就报错,代码区白板了。。。
2006-3-28 10:07
0
雪    币: 242
活跃值: (163)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
77
dump它的VM区段没有全!
在OD中调试dump后的文件,看看它要访问哪个段,在在原文件中dump对应段,贴在后面;如果已全部dump了所有VM段,仍有这个错,就看看你的你的虚以地址与原文件一样不.
2006-3-28 10:27
0
雪    币: 208
活跃值: (41)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
78
好,谢谢。我再试试。
导出VM段这块有没有好的原理性的教程可以推荐一下?
2006-3-28 10:30
0
雪    币: 342
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
79
最初由 林海雪原 发布
关于dump ,z我没有做,走到伪oep之后,所有要访问的段都要吧?
哪一处patch?

就是system的那段patch!
0054B000--BE 01000000     MOV ESI,1       ;ESI=1取出API,ESI=2重定位API                 
0054B005--B8 00005C00     MOV EAX,MultiTra.005C0000     ;IAT 檫始位址
0054B00A--A3 F4AF5400     MOV DWORD PTR DS:[54AFF4],EAX
0054B00F--BA 00104000     MOV EDX,MultiTra              ;CODE 檫始位址   
0054B014--803A E8         CMP BYTE PTR DS:[EDX],0E8     ;是否 CALL ??
0054B017--75 19           JNZ SHORT MultiTra.0054B032
0054B019--8B5A 01         MOV EBX,DWORD PTR DS:[EDX+1]
0054B01C--03DA            ADD EBX,EDX
0054B01E--83C3 05         ADD EBX,5                     ;?算正催的 CALL ADDR
0054B021--81FB 0000EA00   CMP EBX,0EA0000               ;是否 ASPR 解瘁位址??
0054B027--75 2C           JNZ SHORT MultiTra.0054B055
0054B029--60              PUSHAD                        ;保存寄存器
0054B02A--8925 F0AF5400   MOV DWORD PTR DS:[54AFF0],ESP ;保存 ESP 值
0054B030--FFE2            JMP EDX                       ;咄入ASPR 解瘁  
0054B032--66:813A FF25    CMP WORD PTR DS:[EDX],25FF    ;是否 JMP [XX]?
0054B037--75 1C           JNZ SHORT MultiTra.0054B055   
0054B039--8B5A 02         MOV EBX,DWORD PTR DS:[EDX+2]
0054B03C--81FB 08D25400   CMP EBX,MultiTra.0054D208     ;是否在原?IAT位址惯?
0054B042--72 11           JB  SHORT MultiTra.0054B055   ;小於 54D208?
0054B044--81FB 08E25400   CMP EBX,MultiTra.0054E208     
0054B04A--77 09           JA  SHORT MultiTra.0054B055   ;大於 54E208?
0054B04C--8B1B            MOV EBX,DWORD PTR DS:[EBX]
0054B04E--83FE 01         CMP ESI,1                     ;ESI=1??
0054B051--74 26           JE  SHORT MultiTra.0054B079
0054B053--EB 4B           JMP SHORT MultiTra.0054B0A0
0054B055--42              INC EDX                       ;??器 +1
0054B056--81FA 00505400   CMP EDX,MultiTra.00545000
0054B05C--72 B6           JB  SHORT MultiTra.0054B014   ;CODE 段劫束?
0054B05E--EB FE           JMP SHORT MultiTra.0054B05E   ;Patch 劫束 中??
0054B060--90              NOP                           ;<=取得 API 返回?
0054B061--8BDA            MOV EBX,EDX
0054B063--891D F8AF5400   MOV DWORD PTR DS:[54AFF8],EBX ;保存 API
0054B069--8B25 F0AF5400   MOV ESP,DWORD PTR DS:[54AFF0] ;取回 ESP
0054B06F--61              POPAD                         ;?原寄存器
0054B070--8B1D F8AF5400   MOV EBX,DWORD PTR DS:[54AFF8] ;取出 API
0054B076--EB D6           JMP SHORT MultiTra.0054B04E
0054B078--90              NOP
0054B079--8B0D F4AF5400   MOV ECX,DWORD PTR DS:[54AFF4]
0054B07F--B8 00005C00     MOV EAX,MultiTra.005C0000    ;IAT 檫始位址
0054B084--3918            CMP DWORD PTR DS:[EAX],EBX
0054B086--74 CD           JE  SHORT MultiTra.0054B055  ;是否重妖??
0054B088--05 04000000     ADD EAX,4
0054B08D--3BC1            CMP EAX,ECX
0054B08F--72 F3           JB  SHORT MultiTra.0054B084
0054B091--8919            MOV DWORD PTR DS:[ECX],EBX   ;保存 API
0054B093--8305 F4AF5400 04ADD DWORD PTR DS:[54AFF4],4  ;指到下? API ADDR
0054B09A--EB B9           JMP SHORT MultiTra.0054B055
0054B09C--90              NOP
0054B09D--90              NOP
0054B09E--90              NOP
0054B09F--90              NOP
0054B0A0--B8 00005C00     MOV EAX,MultiTra.005C0000    ;IAT 檫始位址
0054B0A5--3918            CMP DWORD PTR DS:[EAX],EBX
0054B0A7--74 0E           JE  SHORT MultiTra.0054B0B7  ;是否找到??
0054B0A9--05 04000000     ADD EAX,4
0054B0AE--3D 6C085C00     CMP EAX,MultiTra.005C086C    ;IAT 劫束位址?
0054B0B3--72 F0           JB  SHORT MultiTra.0054B0A5  
0054B0B5--EB FE           JMP SHORT MultiTra.0054B0B5   
0054B0B7--66:C702 FF25    MOV WORD PTR DS:[EDX],25FF   ;修正? JMP
0054B0BC--2D 00005C00     SUB EAX,MultiTra.005C0000
0054B0C1--05 00105C00     ADD EAX,5C1000               ;修正 OFFSET
0054B0C6--8942 02         MOV DWORD PTR DS:[EDX+2],EAX ;重定位 ADDR   
0054B0C9--EB 8A           JMP SHORT MultiTra.0054B055
0054B0CB--90              NOP
0054B0CC--90              NOP
0054B0CD--90              NOP
0054B0CE--90              NOP
0054B0CF--90              NOP                          ;排序 API
0054B0D0--B9 2C085C00     MOV ECX,MultiTra.005C082C    ;IAT 劫束位址
0054B0D5--BE 00005C00     MOV ESI,MultiTra.005C0000    ;IAT 檫始位址
0054B0DA--8BFE            MOV EDI,ESI
0054B0DC--8B06            MOV EAX,DWORD PTR DS:[ESI]
0054B0DE--8B1F            MOV EBX,DWORD PTR DS:[EDI]
0054B0E0--3BC3            CMP EAX,EBX
0054B0E2--76 05           JBE SHORT MultiTra.0054B0E9   
0054B0E4--93              XCHG EAX,EBX                  ;如果大於?互?  
0054B0E5--8906            MOV DWORD PTR DS:[ESI],EAX
0054B0E7--891F            MOV DWORD PTR DS:[EDI],EBX
0054B0E9--83C7 04         ADD EDI,4
0054B0EC--3BF9            CMP EDI,ECX
0054B0EE--76 EC           JBE SHORT MultiTra.0054B0DC   ;LOOP X1  
0054B0F0--83C6 04         ADD ESI,4
0054B0F3--3BF1            CMP ESI,ECX
0054B0F5--76 E3           JBE SHORT MultiTra.0054B0DA   ;LOOP X2
0054B0F7--EB FE           JMP SHORT MultiTra.0054B0F7   ;排序劫束
我是按照这个打的patch并没有象你教程中那样改变过!当然里面的地址都替换了!在取esi=1时出现异常,单步跟踪发现是在进入asp解析后出现异常!!!!!不知道何解!jmp处 我是选择MOV EAX,700这个地方的!
BTW:期间没有下断点!
2006-3-28 11:43
0
雪    币: 242
活跃值: (163)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
80
to killalarm :
我破文中的红色patch部份要加上的
2006-3-28 11:48
0
雪    币: 342
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
81
MOV DWORD PTR DS:[54AFF0],ESP ;保存 ESP 值
MOV DWORD PTR DS:[54AFE0],EDX   ;解码前保存原地址  
JMP EDX                       ;咄入ASPR 解瘁
……………………
NOP                           ;<=取得 API 返回?
pushad
Mov  eax,IAT地址
@2:
Cmp  [eax],ebx       在IAT中找API,
Jnz  @1       找到后把 call XXXXXX 改为 jmp api地址
Mov ecx, DWORD PTR DS:[54AFE0]   ; 取调用壳的地址
Mov [ecx],25FF              找到后把 call XXXXXX 改为 jmp api地址
Mov [ecx+2],edx
Popad
MOV EBX,EDX  
MOV DWORD PTR DS:[54AFF8],EBX ;保存 API
MOV ESP,DWORD PTR DS:[54AFF0] ;取回 ESP
POPAD                         ;?原寄存器
………..
@1:
Add eax,4
Jmp @2
@1:表示add eax,4所在地址行的地址?同样@2是不是也是这个道理
2006-3-28 11:56
0
雪    币: 242
活跃值: (163)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
82
对啊
2006-3-28 11:59
0
雪    币: 342
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
83
果然是补丁问题!!!已经成功取得IAT并修复了壳代码!但在取esi=2时可能程序出现了循环!提示seh太长是否递归!!!!!!!!
2006-3-28 13:53
0
雪    币: 242
活跃值: (163)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
84
最初由 killalarm 发布
果然是补丁问题!!!已经成功取得IAT并修复了壳代码!但在取esi=2时可能程序出现了循环!提示seh太长是否递归!!!!!!!!


没有必要进行esi=2这步的,如果已用了shoooo的方法.
2006-3-28 13:57
0
雪    币: 342
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
85
果然按照你的方法我想我已经完成的90%的进度了!为什么要修复跳转表!?跳转表的作用是什么!?
2006-3-28 14:53
0
雪    币: 242
活跃值: (163)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
86
如果你不想修复stolen code,这个就没意意了,可以略去....
如果只想dumpVM段,好象连syscom的patch也可不用,dump,dump就好了.....
跳转表==jmp 地址,这些地址不是API,不知叫什么好,就乱写了
2006-3-28 15:04
0
雪    币: 342
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
87
林兄论坛讨论太痛苦,还有很多不明向你讨教!我的qq:20******加我谢谢!msn也可以:kill****@hotmail.com
2006-3-28 15:08
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
88
xuexi yixia
2006-3-29 10:06
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
89
"现在找syscom大侠指明的第二个特征码,找到后按syscom大侠那样jmp好了"这句话怎么理解? 是不是SYSCOM大侠文章中提到 的"(4) 按 CTRL+B 搜索 89,45,F0,B8,00,07,00,00 修改 00BE7097==>JMP 0054B060"这句,为什么我在这找不到这个特征码呢?请指教!
2006-3-30 22:52
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
90
...............
2006-3-31 03:12
0
雪    币: 342
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
91
最初由 netservant 发布
"现在找syscom大侠指明的第二个特征码,找到后按syscom大侠那样jmp好了"这句话怎么理解? 是不是SYSCOM大侠文章中提到 的"(4) 按 CTRL+B 搜索 89,45,F0,B8,00,07,00,00 修改 00BE7097==>JMP 0054B060"这句,为什么我在这找不到这个特征码呢?请指教!

在进入OEP的那个retn处寻找看看,如果进入了OEP段,可以ctrl+m 然后搜索!
2006-3-31 16:17
0
雪    币: 245
活跃值: (195)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
92
?的不邋,??一下,
2006-4-1 05:28
0
雪    币: 167
活跃值: (1574)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
93
学习一下~ 感谢分享~
2006-4-1 07:32
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
94
最初由 killalarm 发布
在进入OEP的那个retn处寻找看看,如果进入了OEP段,可以ctrl+m 然后搜索!


谢谢,找到了,在retn处按Ctrl+B 找到的
2006-4-1 08:53
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
95
我怎么才有一帖呢,老大?
2006-4-1 15:36
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
96
我正在学这种壳谢谢
有什么不懂的可以你们不,呵呵
2006-4-1 15:37
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
97
正在学习中,多谢楼主.
2006-4-2 14:26
0
雪    币: 250
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
98
学习楼主文章,好好学习技术
2006-4-3 19:47
0
雪    币: 231
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
99
哎  向你学习啦
2006-4-3 20:39
0
雪    币: 221
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
100
好久没有来了  就先回这个帖子吧
2006-4-3 22:53
0
游客
登录 | 注册 方可回帖
返回
//