能力值:
( LV2,RANK:10 )
|
-
-
2 楼
附件上传失败,只好放在:b2bK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3&6S2L8h3W2H3j5h3&6Q4x3X3g2U0L8$3#2Q4x3V1k6V1i4K6u0r3i4K6t1#2k6e0S2Q4x3U0f1^5y4q4)9J5y4h3t1I4i4K6t1#2k6e0g2Q4x3U0g2S2x3#2)9J5y4h3t1K6i4K6u0W2M7X3q4J5i4K6u0r3x3h3f1$3z5h3f1K6x3h3j5^5k6o6b7$3x3e0m8T1k6U0b7#2x3o6c8U0y4o6l9H3j5h3y4T1x3X3t1^5k6e0S2T1x3r3x3H3z5o6l9H3k6o6x3$3z5o6M7J5x3K6l9H3
|
能力值:
(RANK:260 )
|
-
-
3 楼
不知道你错误提示是什么。
B程序的入口点代码好像没有被偷。
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
程序A的入口点被偷,程序B的好像确实没有被偷,脱壳后为什么修复不了呢,请指点,困惑了好久了,谢谢!
|
能力值:
(RANK:260 )
|
-
-
5 楼
我对壳的分析也是刚学,不敢妄言。
简单看了一下,试试这样能有没有效果:
按照你原来的方法,在idata节上下内存写入断点,F9运行后来到这里:
015CA48C 8366 0C 00 AND DWORD PTR DS:[ESI+C], 0
015CA490 03C2 ADD EAX, EDX
015CA492 8BD8 MOV EBX, EAX
015CA494 56 PUSH ESI
015CA495 57 PUSH EDI
015CA496 50 PUSH EAX
015CA497 8BF3 MOV ESI, EBX
...
往下拉,一直到这里:
015CA63A 53 PUSH EBX
[COLOR="Red"]015CA63B 50 PUSH EAX[/COLOR]
015CA63C E8 8DB2FFFF CALL B.015C58CE
015CA641 8BD8 MOV EBX, EAX
[COLOR="Red"]015CA643 58 POP EAX
015CA644 33C3 XOR EAX, EBX[/COLOR]
015CA646 C606 68 MOV BYTE PTR DS:[ESI], [COLOR="Red"]68[/COLOR]
015CA649 8946 01 MOV DWORD PTR DS:[ESI+1], EAX
015CA64C C746 05 8134240>MOV DWORD PTR DS:[ESI+5], [COLOR="Red"]243481[/COLOR]
015CA653 895E 08 MOV DWORD PTR DS:[ESI+8], EBX
015CA656 C646 0C C3 MOV BYTE PTR DS:[ESI+C], 0C3
015CA65A 5B POP EBX
015CA65B 8BC6 [COLOR="Red"]MOV EAX, ESI[/COLOR]
015CA65D 8385 0BF94000 0>ADD DWORD PTR SS:[EBP+40F90B], 0D
015CA664 5E POP ESI
015CA665 60 PUSHAD
...
这一段是对输入表进行处理的,其中push eax时,eax中就是API的地址。
下面的0x68是push XXXXXXXX的机器码。
也就是说,这一段代码是构造调用原来API的stub代码。(thunk??)
把
015CA644 33C3 XOR EAX, EBX
和
015CA65B 8BC6 MOV EAX, ESI
这两行全部改成nop,貌似就跳过了对导入表的处理了。 剩下的事就是走到OEP,然后用LordPE将其dump出来。
此时再用ImportRec来修复,应该可以修复了。 因为我的Windows XP x64系统,系统带的kernel32.dll和user32.dll等系统模块与32位的系统不一样,缺少很多函数,这些函数都在其它模块中实现了。这就导致ImportRec在我的机器上无法工作,所以我没办法亲自试验一下。抱歉。你先试试,如果还有问题,咱们继续讨论。
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
多谢嘉宾版主的分析,我试试看
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
我按照嘉宾版主的方法试了一下,脱壳后用插件和等级3还是不修复,麻烦版主换台机器试试看。
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
自己顶一下,晕了
|
能力值:
( LV6,RANK:80 )
|
-
-
9 楼
这壳以前见过一个类似楼主情况的 最后查出原因是用了代码拼接 你的也许是
楼主可查相关资料
|
能力值:
(RANK:260 )
|
-
-
10 楼
楼上说得有道理。
用我说的方法修改壳的解码过程后,最终还有两个函数(一个是MessageBoxA,另一个是什么忘了,不过壳判断的代码就是附近,自己看一下就行)还会被加密,其它API函数指针都恢复成了本来的值,用ImportRec修复时遇到的无效指针全部是空指针,可以直接剪掉。
但是是脱壳后的程序还是无法运行,对比脱前和脱后,发现这个“壳”与“瓤”结合得很紧,基本上分不清楚哪是壳,哪是瓤。比如有很多指针变量,指向的内存区域是壳给分配,而脱壳后这些指针指向了无效的内存。
我的水平是处理不掉了。等待高人吧。
|
能力值:
(RANK:300 )
|
-
-
11 楼
壳在前面跑啊跑,我在后面追啊追...
书呆子强大啊....膜拜膜拜...
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
嘉宾版主都搞不定,我们这些菜鸟就更不用提了,期待高手出现.嘿嘿!看雪老大不知能不能搞定.
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
期待高手出现
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
顶到高手出现
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
看雪老大不知能不能搞定
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
自己还是没有搞定,请大牛指点.
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
期待大牛的指点,谢谢。
|
能力值:
( LV4,RANK:45 )
|
-
-
18 楼
你自己就是牛啊。看看你的头像。
|
能力值:
( LV4,RANK:50 )
|
-
-
19 楼
新手先不要搞难的,从简单的开始,我学了N年了还不会脱壳,一些壳是根本脱不掉的
|
|
|