realright 发表于 2010-3-13 21:47

真正的菜鸟的第二脱——PSG 2.0 -bart/xt 出问题,经求助,已解决,好爽!哈哈

本帖最后由 realright 于 2010-3-14 10:05 编辑

真正的菜鸟的第二脱——PSG 2.0 ->bart/xt 出现问题了,求助

闲话少扯,主题为要。

加壳软件:PSG 2.0 后面有附件
加壳文件:notepad.exe
文件名:PSG_Jsb

略去加壳过程
1. 查壳
peid查壳,如下:


2. 脱壳
od载入,入口代码如下:
01000154 >8725 5CF40101   xchg    dword ptr , esp      //停在这里,f8往下
0100015A    61            popad   //很奇怪,popad出现在这里了,壳下面没有跳转阿???莫名其妙,下吧
0100015B    94            xchg    eax, esp
0100015C    55            push    ebp
0100015D    A4            movs    byte ptr es:, byte ptr [esi>
0100015E    B6 80         mov   dh, 80
01000160    FF13            call    dword ptr //到这里call了,很近,那就跟吧,f7,会跳到010001e8处
                     //f8慢慢出来,要是嵌套call也进去,最后能出来就行
01000162^ 73 F9         jnb   short 0100015D   //出来后在这里,往上的跳,f4过掉它
01000164    33C9            xor   ecx, ecx
01000166    FF13            call    dword ptr    //也是call同理处理,下面还有好几个,同理了
01000168    73 16         jnb   short 01000180
0100016A    33C0            xor   eax, eax
0100016C    FF13            call    dword ptr //call,进去
0100016E    73 1F         jnb   short 0100018F
01000170    B6 80         mov   dh, 80
01000172    41            inc   ecx
01000173    B0 10         mov   al, 10
01000175    FF13            call    dword ptr //进去
01000177    12C0            adc   al, al
01000179^ 73 FA         jnb   short 01000175
0100017B    75 3A         jnz   short 010001B7
0100017D    AA            stos    byte ptr es:
0100017E^ EB E0         jmp   short 01000160
01000180    FF53 08         call    dword ptr //进去
01000183    02F6            add   dh, dh
01000185    83D9 01         sbb   ecx, 1
01000188    75 0E         jnz   short 01000198
0100018A    FF53 04         call    dword ptr //进去
0100018D    EB 24         jmp   short 010001B3//最后出来会在这里,是一个跳,往下
0100018F    AC            lods    byte ptr
01000190    D1E8            shr   eax, 1
01000192    74 2D         je      short 010001C1
01000194    13C9            adc   ecx, ecx
01000196    EB 18         jmp   short 010001B0
01000198    91            xchg    eax, ecx
01000199    48            dec   eax
0100019A    C1E0 08         shl   eax, 8
0100019D    AC            lods    byte ptr
0100019E    FF53 04         call    dword ptr
010001A1    3B43 F8         cmp   eax, dword ptr
010001A4    73 0A         jnb   short 010001B0
010001A6    80FC 05         cmp   ah, 5
010001A9    73 06         jnb   short 010001B1
010001AB    83F8 7F         cmp   eax, 7F
010001AE    77 02         ja      short 010001B2
010001B0    41            inc   ecx
010001B1    41            inc   ecx
010001B2    95            xchg    eax, ebp
010001B3    8BC5            mov   eax, ebp   //跳到这里了,往下
010001B5    B6 00         mov   dh, 0
010001B7    56            push    esi
010001B8    8BF7            mov   esi, edi
010001BA    2BF0            sub   esi, eax
010001BC    F3:A4         rep   movs byte ptr es:, byte ptr>//这里好像过不去,f4过了
010001BE    5E            pop   esi
010001BF^ EB 9F         jmp   short 01000160    //往上的跳,f4过了
010001C1    5E            pop   esi
010001C2    AD            lods    dword ptr
010001C3    97            xchg    eax, edi
010001C4    AD            lods    dword ptr
010001C5    50            push    eax
010001C6    FF53 10         call    dword ptr //又是call,这么远了,不进去了,f4过吧
010001C9    95            xchg    eax, ebp
010001CA    8B07            mov   eax, dword ptr
010001CC    40            inc   eax
010001CD^ 78 F3         js      short 010001C2   //跳转没有实现
010001CF    75 03         jnz   short 010001D4   //往下的,下好了,注意点1
010001D1    FF63 0C         jmp   dword ptr
010001D4    50            push    eax    //跳到这,我觉得不大对劲,因为下面有push ebp了
                           //而且前面还有一个jmp直接过了,我重载了,再次走到注意点1
                           //这次我没有让它往下跳,f4过到jmp语句了,然后跟随进去,删掉分析
                           //发现代码如下:(把下面的代码翻到地吧)
010001D5    55            push    ebp
010001D6    FF53 14         call    dword ptr
010001D9    AB            stos    dword ptr es:
010001DA^ EB EE         jmp   short 010001CA
010001DC    33C9            xor   ecx, ecx
010001DE    41            inc   ecx
010001DF    FF13            call    dword ptr
010001E1    13C9            adc   ecx, ecx
010001E3    FF13            call    dword ptr
010001E5^ 72 F8         jb      short 010001DF
010001E7    C3            retn
010001E8    02D2            add   dl, dl
010001EA    75 05         jnz   short 010001F1
010001EC    8A16            mov   dl, byte ptr
010001EE    46            inc   esi
010001EF    12D2            adc   dl, dl

第二次重载后,跟随jmp进去并删掉分析后的代码:
0100739D    6A 70         push    70             //貌似这个就是oep吗?试试吧,新建eip,dump,保存为1.exe
0100739F    68 98180001   push    01001898
010073A4    E8 BF010000   call    01007568
010073A9    33DB            xor   ebx, ebx
010073AB    53            push    ebx
010073AC    8B3D CC100001   mov   edi, dword ptr          ; kernel32.GetModuleHandleA
010073B2    FFD7            call    edi
010073B4    66:8138 4D5A    cmp   word ptr , 5A4D
010073B9    75 1F         jnz   short 010073DA
010073BB    8B48 3C         mov   ecx, dword ptr
010073BE    03C8            add   ecx, eax
010073C0    8139 50450000   cmp   dword ptr , 4550
010073C6    75 12         jnz   short 010073DA
010073C8    0FB741 18       movzx   eax, word ptr
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   dword ptr , ebx
010073DD    EB 27         jmp   short 01007406

双击桌面上的文件,错误:无法找到入口!
???
我又在dump里选了方法2,再次dump了一遍,运行时说:应用程序初始化失败
郁闷,问题出在哪了呢?用ImpREC修复了一下,双击没反应!!!!???
我查壳,发现又没事阿?
peid如图:


求侠们给个话,来点指导,我知道我菜,但我可以在有资料,有例子的前提下,自己学!!!

下面是加壳软件和加壳后的文件:



深情地求大侠们给点指导!谢谢了!谢谢……

realright 发表于 2010-3-13 22:11

本帖最后由 realright 于 2010-3-14 10:03 编辑

没人回答,哎,算了,下线了!
自己去研究了!郁闷……
新人成长真困难啊!

其实啥克都可以F7OEP


只是时间长短

或者OEP与你擦身而过

真爱也是这样。

没待眼镜,打字错误 ...
ps520 发表于 2010-3-13 23:02 http://www.52pojie.cn/images/common/back.gif
哇,这么资深的牛人都来回复我,我深感荣幸啊!
谢谢指导,貌似f7吗?单步跟踪?那也可以?
但是要是代码多的话,要到什么时候才可以的,我们菜鸟分析不行,oep很可能擦身就过去了,这成功率会很低的!



其实你的oep是对的。
但是修复的时候弄错了。

按照这个图片修复就好了。我是用lordPe来dump的。
gxwtk 发表于 2010-3-14 00:01 http://www.52pojie.cn/images/common/back.gif
哈哈,真的?真的?原来我的工作是对的啊!好爽!
oep没错!呵呵……我新手,能做到这就很不错了!
哎呀,很可惜啊,图片被字挡住了,最关键的字眼看不到,难道是346?
还有,我刚下的loadpe界面跟你的完全不同啊,没有什么那些类似ImpREC里的显示无效函数什么的!
你用的是什么版本的loadpe,能给个网址或者说的更明确一点吗?

microlab321 发表于 2010-3-13 22:50

还真是看不懂的啊

ps520 发表于 2010-3-13 23:02

其实啥克都可以F7OEP


只是时间长短

或者OEP与你擦身而过

真爱也是这样。

没待眼镜,打字错误请见谅

czjh2008 发表于 2010-3-13 23:22

低手路过,顶上……

gxwtk 发表于 2010-3-14 00:01

其实你的oep是对的。
但是修复的时候弄错了。

按照这个图片修复就好了。我是用lordPe来dump的。

Hmily 发表于 2010-3-15 12:29

FSG的IAT需要自己是手工获取下,找下大小范围填写下就可以了.

zhanghuiaq 发表于 2010-3-16 08:50

新手学习中!!!

uo99 发表于 2010-3-26 23:21

来顶你一下

tysan 发表于 2010-7-17 22:15

fsg真的有点难脱呀,我都脱了好几次了。没结果修复不成
页: [1]
查看完整版本: 真正的菜鸟的第二脱——PSG 2.0 -bart/xt 出问题,经求助,已解决,好爽!哈哈