吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 8160|回复: 9
收起左侧

[原创] 菜鸟脱Obsidium 1.2.0.0

  [复制链接]
kir 发表于 2010-9-30 14:01
本帖最后由 kir 于 2010-9-30 18:14 编辑

]感谢XIMO的动画教程指导,不过第一部脱Ob1.2的下载不到,只看了第2部脱1.3的,之后自己尝试脱吾爱练习的0b1.2,记录了一下过程。。。
语言组织得不怎么好,各位看官体谅体谅。。。废话不多说了,直接上过程。。
【文章标题】: 脱Obsidium 1.2.0.0
【软件名称】: 吾爱脱壳练习某期
【下载地址】: 自己搜索下载
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
  一:到达Foep
  程序入口点:
  00419000 > /EB 02           jmp short Obsidium.00419004        
  00419002   |45              inc ebp
  00419003   |08E8            or al,ch
  00419005    3F              aas
  00419006    1E              push ds
  00419007    0000            add byte ptr ds:[eax],al
  00419009    27              daa
  
  下BP ExitProcess,忽略所有异常,shift+F9运行,弹出对话框,点关闭,程序停下来了
  7C81CAFA >  8BFF            mov edi,edi
  7C81CAFC    55              push ebp
  7C81CAFD    8BEC            mov ebp,esp
  7C81CAFF    6A FF           push -1
  7C81CB01    68 B0F3E877     push 77E8F3B0
  7C81CB06    FF75 08         push dword ptr ss:[ebp+8]
  7C81CB09    E8 46FFFFFF     call kernel32.7C81CA54
  7C81CB0E    E9 9ACF0100     jmp kernel32.7C839AAD
  
  观察堆栈:
  0012FF6C   0091B787  /CALL 到 ExitProcess 来自 0091B785
  0012FF70   00000000  \ExitCode = 0
  0012FF74   00A41044
  0012FF78   00A3F000
  0012FF7C   009C7BB4
  往下拉到最下面,发现程序的领空地址00A3E175,并不是熟悉的400000区段。。
  0012FFAC   00A3E175  返回到 00A3E175 来自 009C3D6C    ->here
  0012FFB0   7FFDA000
  0012FFB4   0012FFE0
  0012FFB8   009C39FC
  0012FFBC   0012FFC0
  0012FFC0   0012FFF0
  0012FFC4   7C817067  返回到 kernel32.7C817067
  0012FFC8   7C930208  ntdll.7C930208
  0012FFCC   FFFFFFFF
  0012FFD0   7FFDA000
  0012FFD4   C0000005
  0012FFD8   0012FFC8
  0012FFDC   0012FA6C
  0012FFE0   FFFFFFFF  SEH 链尾部
  0012FFE4   7C839AC0  SE 处理器
  0012FFE8   7C817070  kernel32.7C817070
  0012FFEC   00000000
  0012FFF0   00000000
  0012FFF4   00000000
  0012FFF8   00419000  offset Obsidium.<模块入口点>
  0012FFFC   00000000
  Ctrl+G 00A3E175
  
  00A3E14B    FF8B 0DB003A4   dec dword ptr ds:[ebx+A403B00D]
  00A3E151    00A1 BC02A400   add byte ptr ds:[ecx+A402BC],ah
  00A3E157    8B00            mov eax,dword ptr ds:[eax]
  00A3E159    8B15 3CDCA300   mov edx,dword ptr ds:[A3DC3C]
  00A3E15F    E8 444AFDFF     call 00A12BA8
  00A3E164    A1 BC02A400     mov eax,dword ptr ds:[A402BC]
  00A3E169    8B00            mov eax,dword ptr ds:[eax]
  00A3E16B    E8 B84AFDFF     call 00A12C28
  00A3E170    E8 F75BF8FF     call 009C3D6C
  00A3E175    8D40 00         lea eax,dword ptr ds:[eax]   ->到这里
  代码很乱,花指令很多,再00A3E17处按住Ctrl往上慢慢翻,到这个位置时,再往上都是不正常的代码
  00A3E130    05 675D51DC     add eax,DC515D67
  00A3E135    D0A5 C4D80E7D   shl byte ptr ss:[ebp+7D0ED8C4],1
  00A3E13B    E8 687CF8FF     call 009C5DA8                        ->这里就是foep了,记住地址00A3E13B
  00A3E140    A1 BC02A400     mov eax,dword ptr ds:[A402BC]
  00A3E145    8B00            mov eax,dword ptr ds:[eax]
  00A3E147    E8 444AFDFF     call 00A12B90
  00A3E14C    8B0D B003A400   mov ecx,dword ptr ds:[A403B0]
  00A3E152    A1 BC02A400     mov eax,dword ptr ds:[A402BC]
  
  重新载入程序,Ctrl+G到00A3E13B,但无法到达,应该是还没解码出来,那就先内存断点,Alt+M,在402000处下断,SHIFT+F9
  断下后,Ctrl+G到00A3E13B,在00A3E13B下F2,F9运行。到达foep~~
  
  看语言特点,是DELPHI写的,跟住寄存器和数据窗口的信息,不难退出被偷的代码。。
  push ebp
  mov ebp,esp
  add esp,-10
  mov eax,00A3DED0
  
  算好位置补上被偷的代码
  00A3E130    55              push ebp          ->此处新建EIP
  00A3E131    8BEC            mov ebp,esp
  00A3E133    83C4 F0         add esp,-10
  00A3E136    B8 D0DEA300     mov eax,0A3DED0
  00A3E13B    E8 687CF8FF     call 009C5DA8
  00A3E140    A1 BC02A400     mov eax,dword ptr ds:[A402BC]
  00A3E145    8B00            mov eax,dword ptr ds:[eax]
  00A3E147    E8 444AFDFF     call 00A12B90
  00A3E14C    8B0D B003A400   mov ecx,dword ptr ds:[A403B0]
  00A3E152    A1 BC02A400     mov eax,dword ptr ds:[A402BC]
  
  打开LordPE完整DUMP和区域DUMP包含00A3E130的那段(Region009C0000-00A47000.dmp)
  PE编辑器打开DUMP,打开区段从磁盘载入Region009C0000-00A47000.dmp,载入后修改它的虚拟地址为005C0000,保存并重建PE。
  
  二:寻找IAT。。。。。
  OD大家没急着关闭吧?。
  找IAT的RAV和SIZE(不会找?翻论坛吧)
  00A4212C  0091CD04
  00A42130  0091CD10
  00A42134  0091CD1C
  00A42138  0091CD28
  00A4213C  0091CD34
         .
         .
         .省略部分代码
         .
  00A427B0  0091E116
  00A427B4  0091E122
  00A427B8  0091E12E
  00A427BC  0091E13A
  00A427C0  0091E146
  00A427C4  00000000
  全加密了(不加密还好玩吗?呵呵)SIEZ:0x698
  那就随便跟一个看看吧,一般跟最开始的那个00A4212C  0091CD04
  Ctrl+G 0091CD04
  0091CD04    60              pushad     ->新建EIP
  0091CD05    66:B8 0000      mov ax,0
  0091CD09    B1 00           mov cl,0
  
  慢慢跟一下。。。。。
  0091B389   /0F84 DE040000   je 0091B86D            这有个跳转,不过没跳
  0091B38F   |EB 03           jmp short 0091B394
  
  0091B3B9   /0F84 62010000   je 0091B521            没跳
  0091B3BF   |EB 01           jmp short 0091B3C2
  
  
  0091B3CB   /0F84 F4000000   je 0091B4C5            没跳
  0091B3D1   /EB 02           jmp short 0091B3D5
  
  0091B3E5   /0F84 83060000   je 0091BA6E            没跳
  0091B3EB   |EB 02           jmp short 0091B3EF
  
  0091B3F8   /0F84 99010000   je 0091B597            没跳
  0091B3FE   |EB 01           jmp short 0091B401
  
  单步到这里时,过了CALL之后EAX处出现指针了。
  0091B40A    6A 01           push 1
  0091B40C    50              push eax
  0091B40D    6A 00           push 0
  0091B40F    FF76 04         push dword ptr ds:[esi+4]
  0091B412    FF77 04         push dword ptr ds:[edi+4]
  0091B415    FF53 50         call dword ptr ds:[ebx+50]
  0091B418    EB 04           jmp short 0091B41E              
  
  EAX 7C93135A ntdll.RtlDeleteCriticalSection
  ECX 7C920000 ntdll.7C920000
  EDX 7C92CE40 ntdll.ZwAcceptConnectPort
  EBX 00419622 Obsidium.00419622
  ESP 0012FF90
  EBP 005012CE
  ESI 00918864
  EDI 00918664
  EIP 0091B418
  
  再跟几个,都是在这个位置,EAX出现指针,那就PATCH代码吧,估计能找出大部分被加密的函数出来。
  
  申请一个空间写代码,我用的是SOD插件申请的。
  00970000    C705 2821A400 2>mov dword ptr ds:[A42128],0A4212C  ->新建eip
  0097000A    8B35 2821A400   mov esi,dword ptr ds:[A42128]
  00970010    8906            mov dword ptr ds:[esi],eax
  00970012    83C6 04         add esi,4
  00970015    8935 2821A400   mov dword ptr ds:[A42128],esi
  0097001B    8B06            mov eax,dword ptr ds:[esi]
  0097001D    83F8 00         cmp eax,0
  00970020    74 04           je short 00990026
  00970022    8BFA            mov edi,edx
  00970024    FFE0            jmp eax     ->跳到下一个DLL地址
  00970026  - EB FE           jmp short 00990026       ->这里下断,停在这里表示寻找完毕
  00970028    3BD7            cmp edx,edi             ->这里是判断分隔函数的代码段,是分割段就填充eax为0,
  0097002A  - 0F84 BAB2F8FF   je 0091B2EA               不判断的话就要自己来分割,为什么这样判断?大家分析一下,很容易就想到的。
  00970030    B8 00000000     mov eax,0
  00970035  ^ EB D3           jmp short 0099000A
  C7 05 28 21 A4 00 2C 21 A4 00 8B 35 28 21 A4 00 89 06 83 C6 04 89 35 28 21 A4 00 8B 06 83 F8 00
  74 04 8B FA FF E0 EB FE 3B D7 0F 84 BA B2 FA FF B8 00 00 00 00 EB D3
  
  
  
  0091B2E5   /EB 03           jmp short 0091B2EA   改成  jmp 00970028(改了之后多了3个NOP,把那3个NOP撤销修改)
  
  0091B418    EB 04           jmp short 0091B41E   改成  jmp 0097000A(跳到PATCH函数段,将函数还原)
  
  
  这样运行后,在几个DLL处出现错误。自己跟踪发现不到函数的直接跳过,有如下2处。
  0091C9DB   /EB 04           jmp short 0091C9E1  改成  jmp 0097000A
  
  0091CB80    C8 000000       enter 0,0         改成    jmp 0097000A
  0091CB84    53              push ebx
  0091CB85    E8 00000000     call 0091CB8A
  
  还有一个错误,就是
  0091B3F8   /0F84 99010000   je 0091B597            大多数函数都没跳,但有几个函数这里跳了,估计是分支。
  0091B3FE   |EB 01           jmp short 0091B401
  Ctrl+G 0091B597
  0091B597   /EB 03           jmp short 0091B59C   
  在这里下F2断点,遇到进入这里的分支就慢慢跟一下,跟到函数就立刻jmp 0097000A
  这分支里面有3个判断分支,其中1个跟到retn都跟不到函数,就直接将retn改成
  mov eax,1  (随便填充eax,防止它的值是0)
  jmp 0097000A
  有一分支进入到00400000的区段,跟出了函数后,再jmp 0097000A,之后需要返回撤销修改。
  剩下的一个分支很和谐,直接跟踪到函数了,之后jmp 0097000A运行并没出现错误
  
  得到的IAT,2进制复制。。
  5A 13 93 7C E0 10 92 7C 00 10 92 7C 81 9F 80 7C 74 9B 80 7C E1 9A 80 7C BF 99 80 7C 1D 9A 80 7C
  05 01 28 0A B8 97 80 7C 0A 98 80 7C F6 97 80 7C 61 BA 80 7C 64 A1 80 7C 88 9C 80 7C 80 CB 91 00
  A1 01 81 7C 53 1D 80 7C A5 A4 80 7C F2 1E 80 7C 30 AE 80 7C 31 B7 80 7C 5F B5 80 7C F2 D2 80 7C
  B2 CE 91 00 6E AC 80 7C 69 38 81 7C 67 EE 80 7C FA CA 81 7C 17 0E 81 7C 6A 3E 86 7C A5 AB 94 7C
  99 2A 81 7C C9 2F 81 7C 00 00 00 00 DB 11 D3 77 08 C9 D2 77 EA 07 D5 77 B0 C8 D2 77 00 00 00 00
  AB 7A DA 77 42 78 DA 77 17 6C DA 77 00 00 00 00 80 48 0F 77 EC A3 0F 77 39 4B 0F 77 00 00 00 00
  55 9C 80 7C D0 97 80 7C 1D 9A 80 7C 31 B7 80 7C 00 00 00 00 AB 7A DA 77 42 78 DA 77 17 6C DA 77
  00 00 00 00 91 BE 80 7C 31 BB 80 7C 17 0E 81 7C 30 25 80 7C 61 BA 80 7C E1 9A 80 7C 46 24 80 7C
  F9 BC 80 7C DA B8 81 7C 1E 0C 81 7C A7 A0 80 7C 9F AC 80 7C 5E 20 83 7C CB A0 80 7C 12 18 80 7C
  88 9C 80 7C 56 98 80 7C 27 CD 80 7C 45 A0 80 7C 7B 1D 80 7C E0 10 92 7C 91 9E 80 7C 81 9F 80 7C
  12 FF 80 7C 49 24 81 7C D1 4C 83 7C A9 FF 80 7C BF FC 80 7C DB 60 83 7C AB 0B 83 7C BD FD 80 7C
  C1 60 83 7C 6E 2B 81 7C 05 01 28 0A 2E 93 80 7C A5 A4 80 7C E2 5D 83 7C E6 2D 81 7C EF 70 87 7C
  C9 2F 81 7C 30 AE 80 7C 31 B7 80 7C 5F B5 80 7C F2 D2 80 7C 64 A8 80 7C 01 FE 92 7C 8C 39 81 7C
  DD 02 83 7C 06 62 83 7C B8 97 80 7C D0 03 00 00 06 2F 81 7C A5 99 80 7C 00 00 00 00 1E 98 80 7C
  6E AC 80 7C 90 F7 82 7C 19 BF 80 7C 69 38 81 7C 67 EE 80 7C F6 E8 80 7C 4D 06 83 7C 29 82 83 7C
  00 10 92 7C 5A 13 93 7C C7 06 81 7C 28 1A 80 7C 9D 08 83 7C 07 D1 80 7C D7 9B 80 7C 00 00 00 00
  AA 18 BD 77 EF 19 BD 77 40 1A BD 77 00 00 00 00 37 D8 EF 77 D0 B6 EF 77 14 8E EF 77 B1 C7 F1 77
  4C 7B EF 77 77 5D EF 77 97 85 EF 77 D0 D8 EF 77 4B B8 EF 77 1F 6D F0 77 E6 C7 F0 77 EC 87 EF 77
  DB 5E EF 77 29 5E EF 77 32 86 EF 77 70 5B EF 77 A0 7A EF 77 EE 8B EF 77 32 C6 F1 77 28 8B EF 77
  BE E9 EF 77 1B 82 EF 77 5B EA EF 77 83 E0 EF 77 B0 ED EF 77 47 9F F1 77 9B 86 EF 77 1A A2 EF 77
  C1 A0 EF 77 97 D9 EF 77 56 6A EF 77 1E DA EF 77 A4 AE F2 77 01 7C EF 77 45 DF EF 77 FF DC EF 77
  1C EF EF 77 9E BA EF 77 C1 61 EF 77 4C B7 EF 77 1A B6 EF 77 25 8D EF 77 FE A9 F2 77 D2 03 F0 77
  7F 9A F1 77 71 5A EF 77 A5 9F EF 77 DE B1 EF 77 EF D9 EF 77 75 EE F0 77 3D 83 EF 77 A1 6A EF 77
  F6 99 EF 77 F4 AA EF 77 8D 59 EF 77 5D A9 EF 77 EC 90 EF 77 FA 6B EF 77 44 FD EF 77 5F 6E EF 77
  A5 61 EF 77 86 77 EF 77 7C 79 F0 77 55 A1 EF 77 EA B5 EF 77 8A BA EF 77 CE EC EF 77 23 AD EF 77
  19 9E EF 77 E0 5F EF 77 0A 70 EF 77 69 D9 EF 77 EF 61 EF 77 90 70 F0 77 E7 95 EF 77 79 6F EF 77
  00 00 00 00 A9 E4 D2 77 66 97 D2 77 5D EE D3 77 0C 94 D1 77 AB AE D2 77 A3 89 D2 77 F3 D5 D2 77
  F6 8B D1 77 2F FB D2 77 1E 53 D6 77 B2 DE D2 77 56 AF D2 77 F2 F2 D2 77 E6 61 D5 77 6E FA D2 77
  28 E5 D2 77 11 12 D3 77 F3 99 D2 77 46 DE D1 77 BB C2 D2 77 9D C2 D2 77 2E 8C D1 77 9B F9 D2 77
  50 F7 D2 77 56 90 D1 77 A6 8F D2 77 00 00 D3 77 F9 C7 D2 77 5E AE D6 77 F6 F3 D4 77 ED 42 D2 77
  12 B1 D2 77 30 99 D2 77 9E 0F D3 77 71 FE D2 77 5E C3 D2 77 22 78 D2 77 C2 F3 D2 77 39 FF D2 77
  A0 97 D2 77 94 00 D3 77 16 F7 D1 77 9D 86 D1 77 7A C3 D2 77 28 8E D1 77 28 8E D1 77 5E EA D2 77
  44 99 D2 77 19 97 D2 77 5A CA D2 77 FD AA D2 77 40 A3 D2 77 77 02 D3 77 11 90 D2 77 D7 00 D3 77
  9E B2 D2 77 EA 07 D5 77 7B 1F D3 77 07 95 D2 77 EA FE D2 77 08 C9 D2 77 62 62 D5 77 F6 E8 D2 77
  3E D3 D2 77 3C 47 D2 77 42 8C D1 77 8A 9C D2 77 3D 9E D2 77 72 9F D2 77 7A 97 D2 77 13 93 D2 77
  FE 98 D2 77 FF 97 D2 77 89 C6 D3 77 0E 97 D1 77 D5 8F D2 77 1F 8F D2 77 10 F7 D4 77 26 ED D3 77
  D5 98 D2 77 80 8A D1 77 36 78 D2 77 CD A5 D2 77 6B 21 D3 77 B4 90 D2 77 C7 03 D3 77 A6 88 D1 77
  5D 94 D1 77 21 90 D1 77 5B F2 D2 77 9C 8F D1 77 22 B2 D2 77 AB 8E D1 77 78 8E D1 77 96 D8 D2 77
  87 F7 D2 77 04 F7 D2 77 E2 DF D2 77 42 00 D3 77 0F 91 D2 77 55 96 D2 77 4E F2 D4 77 67 F9 D1 77
  AD F0 D2 77 C8 F1 D4 77 1C EF D2 77 BA 14 D3 77 7A 15 D3 77 26 D2 D2 77 1B 9C D2 77 F6 9B D2 77
  D9 9E D2 77 B4 F6 D4 77 27 D4 D2 77 23 98 D2 77 C8 98 D2 77 6B D8 D2 77 1B AF D2 77 D2 D1 D2 77
  95 C5 D2 77 C7 86 D1 77 4E 97 D2 77 1B A9 D2 77 BA 0D D3 77 8E 90 D2 77 5F F4 D2 77 FF EB D3 77
  DA 94 D1 77 E8 C2 D2 77 2A F9 D2 77 4A 21 D3 77 E1 82 D2 77 2F 9C D2 77 81 9E D2 77 AE A5 D2 77
  39 F5 D2 77 FD 8F D2 77 49 98 D2 77 05 80 D6 77 C4 D2 D2 77 96 0D D3 77 E2 D7 D2 77 02 C7 D3 77
  9C F6 D4 77 84 CB D2 77 6C D0 D3 77 40 E9 D3 77 4F F9 D2 77 F6 FB D2 77 B8 96 D1 77 9C B1 D2 77
  9D D3 D2 77 12 D3 D2 77 12 D3 D2 77 D3 CE D2 77 7E C1 D2 77 B4 F9 D4 77 65 F9 D4 77 01 F6 D1 77
  06 F3 D2 77 BC 70 D5 77 14 DC D2 77 65 02 D3 77 60 9B D2 77 BD 1A D3 77 7D A9 D2 77 C6 B3 D2 77
  E9 8F D2 77 B0 C8 D2 77 45 88 D2 77 17 87 D2 77 3F AE D1 77 F1 AE D1 77 EA E7 D2 77 73 86 D2 77
  00 00 00 00 46 24 80 7C 00 00 00 00 10 AB 0F 77 5A 51 0F 77 A6 51 0F 77 55 AA 0F 77 BB 6B 0F 77
  FD 4C 0F 77 F0 48 0F 77 50 49 0F 77 00 00 00 00 A9 2F 1B 5D 3A E3 17 5D F5 2D 1B 5D 6D 40 1B 5D
  D6 2B 1B 5D 22 2D 1B 5D 82 2B 1B 5D CF 2C 1B 5D FA 2C 1B 5D A1 2C 1B 5D 1B 2C 1B 5D 59 2C 1B 5D
  91 4A 1B 5D DF 06 18 5D FD 68 18 5D F1 DF 18 5D 80 84 18 5D 6C B6 17 5D F4 C7 17 5D C5 2E 1B 5D
  78 D5 17 5D D8 03 18 5D 05 02 18 5D 00 00 00 00 50 11 61 7D 00 00 00 00
  
  重新载入程序,到达foep,补上被偷的代码,2进制粘贴找到的DLL。。打开ImpREC
  Rva:0064212C
  SIEZ:0x698
  获取输入表,有6个无效。还好就6个。。随便找一个DELPHI程序,对比他的IAT,很快就找到跟不出的几个函数名称了
  
  rva:0064214C        GetVersion
       00642168        lstrlen
       0064218C        GetCommandLineA
       00642294         GetVersion
       006422D8        GetCurrentProcessId
       006422E4        FreeResource
  修改完后OEP记得填上 63E130
  转存后的程序能运行了。。。
  

--------------------------------------------------------------------------------
【版权声明】: 本文原创于Kir,  转载请注明作者并保持文章的完整, 谢谢!

XIMO动画里在IAT加密前躲过去,我想了想,无论怎么加密,你总要把它(DLL)给取出来吧???,所以就尝试了自己还原DLL,虽然繁琐,不过重在过程而已。。

dump.rar (802.54 KB, 下载次数: 22)       
iat.txt (18.95 KB, 下载次数: 5)

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

寂寞地发呆 发表于 2010-9-30 14:13
回复 1# kir


    下来试试看了,谢谢楼主
xie83544109 发表于 2010-9-30 14:13
Hmily 发表于 2010-9-30 18:07
代码最好使用代码框标签这样会显得很好看,加精鼓励!期待更多作品!
 楼主| kir 发表于 2010-9-30 18:16
代码最好使用代码框标签这样会显得很好看,加精鼓励!期待更多作品!
Hmily 发表于 2010-9-30 18:07


改好啦!!
kenljc 发表于 2010-10-3 19:54
写的很好啊
hero2008 发表于 2010-10-3 20:06
虽然看得不太懂,但还是顶一下[s:369]
寻梦小子 发表于 2012-6-4 00:58
感谢楼主的教程,这在研究这个壳,在iat加密上停了好久。
落岸天使 发表于 2012-6-4 12:51
分析的不错,小菜菜来学习了,顶起来
 楼主| kir 发表于 2013-6-25 23:54
想不到这贴子加精了,好久没玩脱壳,现在看回来挺有感觉的
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-3 18:36

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表