首页
社区
课程
招聘
FSG2.0的一个问题?
发表于: 2010-6-12 13:33 3704

FSG2.0的一个问题?

2010-6-12 13:33
3704
这个壳我先到OEP,然后脱壳,用IR剪切指针,转储后能运行。。。
经过我的分析,其实剪切指针就是在那几个出问题的指针把值改为0.。
鉴于这个思路,我就在(比如0100101c这个是错误的指针)错误指针处下硬件访问断点
成功的断了下来,想直接修改它,接下来就是问题了,它里面mov dh,80,也就是断下来的地方
我一修改后运行,不行,后面还有对该地址的访问也是一样,我一修改后运行,程序就出错
后面我在OEP处通过内存修改了那几个错误指针的值,然后dump,运行OK,现在就是想知道下能不能在OEP之前通过改代码的形式使IAT不被破坏~~
希望哪位大牛指点下,怎么改才会不出错~~
程序在附件中~~

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

上传的附件:
收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 360
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
rol
2
个人认为 错误的指针(7F FF FF FF)是保证壳正确载入iat的标志(遇见这个标志,壳就知道该换一个dll了)。
可能在加壳的时候就处理了,解密出来之后就是这个样子了。所以不好改,因为一改可能解密的其他数据就不对了。只能在壳顺利的把原iat载入完之后再把 7f ff ff ff 替换成 00 00 00 00
2010-6-12 14:53
0
雪    币: 96
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
貌似7F FF FF FF不是载入iat的标志,我那天跟了upack这个压缩壳,里面换dll的时候没出现7F FF FF FF,貌似这7F FF FF FF是FSG2.0弄的,不解中,希望一起探讨下~~
2010-6-12 15:43
0
雪    币: 360
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
rol
4
输入表处理的代码
010001B7    56       push    esi
010001B8    8BF7     mov     esi, edi
010001BA    2BF0     sub     esi, eax
010001BC    F3:A4    rep     movs byte ptr es:[edi], byte ptr [esi]
010001BE    5E       pop     esi
010001BF  ^ EB 9F    jmp     short 01000160
010001C1    5E       pop     esi
010001C2    AD       lods    dword ptr [esi]
010001C3    97       xchg    eax, edi
010001C4    AD       lods    dword ptr [esi]
010001C5    50       push    eax
010001C6    FF53 10  call    dword ptr [ebx+10]
010001C9    95       xchg    eax, ebp
010001CA    8B07     mov     eax, dword ptr [edi]
010001CC    40       inc     eax
010001CD  ^ 78 F3    js      short 010001C2
010001CF    75 03    jnz     short 010001D4
010001D1    FF63 0C  jmp     dword ptr [ebx+C]
010001D4    50       push    eax
010001D5    55       push    ebp
010001D6    FF53 14  call    dword ptr [ebx+14]
010001D9    AB       stos    dword ptr es:[edi]
010001DA  ^ EB EE    jmp     short 010001CA
010001DC    33C9     xor     ecx, ecx
010001DE    41       inc     ecx
010001DF    FF13     call    dword ptr [ebx]
010001E1    13C9     adc     ecx, ecx
010001E3    FF13     call    dword ptr [ebx]
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 [esi]
010001EE    46       inc     esi
010001EF    12D2     adc     dl, dl
010001F1    C3       retn


解压后的输入表
01001000  A3 7C 00 01 B7 7C 00 01 C5 7C 00 01 D5 7C 00 01  .穦.舼.諀.
01001010  E5 7C 00 01 F9 7C 00 01 91 7C 00 01 FF FF FF 7F  鍇.鵿.憒.
01001020  49 7B 00 01 FF FF FF 7F D1 81 00 01 C5 81 00 01  I{.褋.艁.
01001030  BB 81 00 01 AF 81 00 01 DB 81 00 01 8B 81 00 01  粊.瘉.蹃.媮.
01001040  7F 81 00 01 F3 81 00 01 5F 81 00 01 A3 81 00 01  ?髞._?.
01001050  E7 81 00 01 51 81 00 01 3F 81 00 01 31 81 00 01  鐏.Q???1?
01001060  21 81 00 01 0B 81 00 01 FB 80 00 01 03 82 00 01  !? ?麁.?
01001070  15 82 00 01 21 82 00 01 2B 82 00 01 3D 82 00 01  ?!?+?=?
01001080  51 82 00 01 6F 81 00 01 FF FF FF 7F 25 80 00 01  Q?o?%€.


填充后的输入表
01001000  FF 6F DA 77 27 6C DA 77 55 BA DC 77 35 BD DC 77  o趙'l趙U很w5杰w
01001010  BB 7A DA 77 52 78 DA 77 67 D7 DA 77 FF FF FF 7F 粃趙Rx趙g宗w
01001020  70 D2 18 77 FF FF FF 7F 61 DC F0 77 D2 4C F2 77  p?wa莛w襆騱
01001030  F1 DE F0 77 5F 6E EF 77 9E F4 F0 77 9D 7F EF 77  褶饂_n飛烎饂?飛
01001040  38 BE EF 77 F2 4D F2 77 CB A5 EF 77 AC 7E EF 77  8撅w騇騱衰飛瑍飛
01001050  62 59 F2 77 18 FE F1 77 C1 61 EF 77 B3 83 EF 77  bY騱w羇飛硟飛
01001060  71 5A EF 77 9E 93 EF 77 FA 6B EF 77 B9 7D EF 77  qZ飛灀飛鷎飛箎飛
01001070  DB 5E EF 77 C7 D4 EF 77 D4 72 F0 77 7D 73 F0 77  踍飛窃飛詒饂}s饂
01001080  1F 94 EF 77 70 5B EF 77 FF FF FF 7F B8 97 80 7C  旓wp[飛笚€|


代码中跳转成立的条件就是读到 7f ff ff ff 在那之前更改就会使输入表填充不正确
2010-6-12 16:41
0
游客
登录 | 注册 方可回帖
返回
//