能力值:
( LV2,RANK:10 )
|
-
-
26 楼
[QUOTE=;]...[/QUOTE]
高手基本不来这版块啊?谁来照顾我们啊~~~寒
|
能力值:
( LV3,RANK:30 )
|
-
-
27 楼
高手都去学习了。。。。。。。。不用等了
|
能力值:
( LV2,RANK:10 )
|
-
-
28 楼
高手基本不来这版块啊?谁来照顾我们啊~~~寒
|
能力值:
( LV6,RANK:90 )
|
-
-
29 楼
google了一下,fly大虾说发现是tls索引变量,被破坏造成的。
004CF1B0 > 833D 4CFE4C00 0>cmp dword ptr [4CFE4C], 0
004CF1B7 75 05 jnz short 004CF1BE
004CF1B9 E9 01000000 jmp 004CF1BF
004CF1BE C3 retn
004CF1BF E8 46000000 call 004CF20A
004CF1C4 E8 73000000 call 004CF23C
004CF1C9 B8 B0F14C00 mov eax, offset <ModuleEntryPoint>
004CF1CE 2B05 08FE4C00 sub eax, dword ptr [4CFE08]
004CF1D4 A3 48FE4C00 mov dword ptr [4CFE48], eax
004CF1D9 E8 9C000000 call 004CF27A
004CF1DE E8 2D020000 call 004CF410
004CF1E3 E8 DD060000 call 004CF8C5
004CF1E8 E8 2C060000 call 004CF819
004CF1ED A1 48FE4C00 mov eax, dword ptr [4CFE48]
004CF1F2 C705 4CFE4C00 0>mov dword ptr [4CFE4C], 1
004CF1FC 0105 00FE4C00 add dword ptr [4CFE00], eax
004CF202 FF35 00FE4C00 push dword ptr [4CFE00]
004CF208 C3 retn // 返回OEP
在上面 004CF208这一行下断,F9,停下后取消断点。F8来到oep
004A2AF8 55 push ebp // OEP
004A2AF9 8BEC mov ebp, esp
004A2AFB 83C4 F0 add esp, -10
004A2AFE B8 CC104A00 mov eax, 004A10CC
004A2B03 E8 EC3EF6FF call 004069F4
004A2B08 A1 C0504A00 mov eax, dword ptr [4A50C0]
004A2B0D 8B00 mov eax, dword ptr [eax]
004A2B0F E8 4C33FCFF call 00465E60
004A2B14 A1 C0504A00 mov eax, dword ptr [4A50C0]
004A2B19 8B00 mov eax, dword ptr [eax]
004A2B1B BA 702B4A00 mov edx, 004A2B70 ; ASCII "Shin Dragon"
004A2B20 E8 D32DFCFF call 004658F8
004A2B25 8B0D 18524A00 mov ecx, dword ptr [4A5218] ; 连锁.004A9730
然后正常dump,用importREC修复iat. 运行会提示错误。
用lordpe, [PE Editor]->[Directories] 可以看到[Tls table]有一项。RVA = 000CFE24, size=00000018. 然后点击后面的有...的按钮,有一个对话框。注意到有 IndexVariableVA这一项。里面是0000000,把它修改成 004CFE3C, 就是 上面 (RVA = 000CFE24)+(size=00000018)=000CFE3C,由于基制为 00400000,结果就是004CFE3C。一定要保存。
这样就好了。
希望对你有帮助。
|
能力值:
( LV2,RANK:10 )
|
-
-
30 楼
站在高人的肩上总是不一样~~~~~
|
能力值:
( LV2,RANK:10 )
|
-
-
31 楼
我也不会诶~! UPX比较好去 ,
你去找个UPX的吧 哈哈
|
能力值:
( LV2,RANK:10 )
|
-
-
32 楼
按29楼的方法去做了几次。。都还是运行错误。。为什么?
修改它的IAT 修改成什么?2AF8?
|
能力值:
( LV2,RANK:10 )
|
-
-
33 楼
都快崩溃了~~~~~~~~
|
能力值:
( LV2,RANK:10 )
|
-
-
34 楼
有没有高手再指点一下?
|
能力值:
( LV2,RANK:10 )
|
-
-
35 楼
又弄了几次。。发现运行的话,不提示错误了,但是双击没反应。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
36 楼
?? 说了半天要成品啊
|
能力值:
( LV6,RANK:90 )
|
-
-
37 楼
早知道要成品的话,我就传上来了,害得我打了那么多字.:-)
|
能力值:
( LV2,RANK:10 )
|
-
-
38 楼
呵呵, ginkgo 的方法是可以的
|
能力值:
( LV2,RANK:10 )
|
-
-
39 楼
在此要谢谢ginkgo大大~~~ 今天学到东西了~~~ ...
|
能力值:
( LV6,RANK:90 )
|
-
-
40 楼
我也是看fly大大的一个帖子。主要是delphi的程序,其他的不需要。
还有一个方法是把npack处理tls table的语句nop掉,方法如下
004CF1B0 > 833D 4CFE4C00 0>cmp dword ptr [4CFE4C], 0
004CF1B7 75 05 jnz short 004CF1BE
004CF1B9 E9 01000000 jmp 004CF1BF
004CF1BE C3 retn
004CF1BF E8 46000000 call 004CF20A
004CF1C4 E8 73000000 call 004CF23C
004CF1C9 B8 B0F14C00 mov eax, offset <ModuleEntryPoint>
004CF1CE 2B05 08FE4C00 sub eax, dword ptr [4CFE08]
004CF1D4 A3 48FE4C00 mov dword ptr [4CFE48], eax
004CF1D9 E8 9C000000 call 004CF27A
004CF1DE E8 2D020000 call 004CF410
004CF1E3 E8 DD060000 call 004CF8C5
004CF1E8 E8 2C060000 call 004CF819 // iat process
004CF1ED A1 48FE4C00 mov eax, dword ptr [4CFE48]
004CF1F2 C705 4CFE4C00 0>mov dword ptr [4CFE4C], 1
004CF1FC 0105 00FE4C00 add dword ptr [4CFE00], eax
004CF202 FF35 00FE4C00 push dword ptr [4CFE00]
004CF208 C3 retn // jmp to OEP
004CF1E8 用F7进去来到 004CF819
004CF819 55 push ebp
004CF81A 8BEC mov ebp, esp
004CF81C 51 push ecx
004CF81D FF35 48FE4C00 push dword ptr [4CFE48]
004CF823 E8 08F8FFFF call 004CF030
004CF828 83B8 C0000000 0>cmp dword ptr [eax+C0], 0
004CF82F 59 pop ecx
004CF830 74 48 je short 004CF87A
004CF832 A1 50FE4C00 mov eax, dword ptr [4CFE50]
004CF837 A3 2CFE4C00 mov dword ptr [4CFE2C], eax // TLS
004CF83C 8B0D 50FE4C00 mov ecx, dword ptr [4CFE50]
004CF842 64:8B15 2C00000>mov edx, dword ptr fs:[2C]
004CF849 8B0C8A mov ecx, dword ptr [edx+ecx*4]
在 004CF837 这一行下断,停下来nop掉,用F8过,然后再恢复nop的代码。然后Ctrl+F9 回到 004CF1ED , 下面到oep后,正常dump 和修复IAT.
ps. 这里只是托壳,要破解请自己搞定。
|
能力值:
( LV2,RANK:10 )
|
-
-
41 楼
恩。。我最后终于搞定了。。。方法是对的。。。完全可行。。。谢谢啦。。真的是非常感谢啊。。
|
|
|