奇趣技术网 收藏本站
设为主页
商务合作
首页 新闻中心 行业动态 软件新闻 安全资讯 病毒预警 漏洞发布 操作系统 Dos Win9x Win2000 WinXP Win2003 WinVista Linux Unix
数据库 DB2 Access MSSQL MySQL Oracle Sybase 编程技术 ASP PHP JSP CGI/Perl XML .Net C/C++/C# VB VC Delphi Java 汇编
安全技术 安全教学 工具介绍 漏洞利用 病毒防范 入侵检测 防火墙 安全防范 汉化破解 攻击实例 加密解密 技术论坛
中华网络安全联盟 >> 安全技术 >> 汉化破解 >> WinUpack通用脱壳--韩天一天堂木马
安全技术
安全资讯
病毒预警
漏洞发布
安全教学
工具介绍
漏洞利用
病毒防范
入侵检测
防火墙
安全防范
汉化破解
攻击实例
加密解密
  • 完全破解灰鸽子成为会

  • 迅雷5.0.0.72 广告条移

  • 网页加密和破解篇

  • 破解QQ密码完全剖析

  • 免费在线电影破解((最

  • 汉化软件照样破

  • 实战破解交换机密码

  • QQ聊天霸王 V2.06 脱壳

  • WinUpack通用脱壳--韩天一天堂木马
    字体:

    中华网络安全联盟    作者:佚名    来源:网络    时间:2006-3-19


    ZeTa给了个韩天一的天堂木马服务端,说是他中了这个东西,委托我拆开看看
    在此献丑了
    OD载入,停在如下代码处
    00428F6D L> BE 88014000 mov esi,L.00400188
    00428F72 AD lods dword ptr
    ds:[esi]
    00428F73 8BF8 mov edi,eax
    00428F75 95 xchg eax,ebp
    00428F76 AD
    lods dword ptr ds:[esi]
    00428F77 91 xchg eax,ecx
    代码分析不是很麻烦但是也不必慢慢分析了
    我总结了一下WinUpack寻找OEP的规律
    直接CTRL+S搜索命令序列
    push
    esi
    xchg eax,edi
    到了如下代码处
    00429117 - 0F84 BBDFFDFF je L.004070D8
    0042911D 56 push esi
    0042911E 97
    xchg eax,edi
    0042911F FF53 FC call dword ptr ds:[ebx-4]
    00429122 95 xchg
    eax,ebp
    00429123 AC lods byte ptr ds:[esi]
    紧靠上面的je L.004070D8看见了么?
    je后面的值就是OEP了,呵呵,简单吧
    复制OEP,CTRL+G转跳到 OEP
    F4运行到OEP
    004070D8 55 db 55 ; CHAR 'U'
    004070D9 8B db 8B
    004070DA EC db
    EC
    004070DB 83 db 83
    004070DC C4 db C4
    004070DD F0 db F0
    004070DE B8
    db B8
    004070DF 68704000 dd L.00407068
    004070E3 E8 db E8
    004070E4 5C db
    5C ; CHAR ''
    看见的都是数据呵,没有关系的,CTRL+A分析代码
    典型的Borland Delphi 6.0 -
    7.0入口
    用LordPE
    DUMP出来,RecImport修复输入表
    运行看看有没有问题,..................,竟然运行以后没有反应
    估计是有自校验
    再看看自校验的问题
    OD载入
    004070D8 d> $ 55 push ebp
    004070D9 . 8BEC mov ebp,esp
    004070DB .
    83C4 F0 add esp,-10
    004070DE . B8 68704000 mov
    eax,dumped_.00407068
    004070E3 . E8 5CCDFFFF call dumped_.00403E44
    004070E8
    . E8 B3E9FFFF call dumped_.00405AA0
    004070ED . E8 EAC3FFFF call
    dumped_.004034DC
    从call dumped_.00405AA0跟进
    00405AA0 /$ 55 push ebp
    00405AA1 |. 8BEC mov ebp,esp
    00405AA3 |. B9
    0C000000 mov ecx,0C
    00405AA8 |> 6A 00 /push 0
    00405AAA |. 6A 00 |push
    0
    00405AAC |. 49 |dec ecx
    00405AAD |.^ 75 F9 \jnz short
    dumped_.00405AA8
    00405AAF |. 51 push ecx
    00405AB0 |. 53 push ebx
    把光标停在00405AB0
    F4越过00405AAD |.^ 75 F9 \jnz short
    dumped_.00405AA8处的循环
    看见下面的
    00405AC6 |> /E8 51120000 /call dumped_.00406D1C
    00405ACB |. |A1
    04814000 |mov eax,dword ptr ds:[408104]
    00405AD0 |. |8B00 |mov eax,dword ptr
    ds:[eax]
    00405AD2 |. |E8 6DDEFFFF |call dumped_.00403944
    00405AD7 |. |50
    |push eax ; /MapName
    00405AD8 |. |68 FB100100 |push 110FB ; |MaximumSizeLow =
    110FB
    00405ADD |. |6A 00 |push 0 ; |MaximumSizeHigh = 0
    00405ADF |. |6A 04
    |push 4 ; |Protection = PAGE_READWRITE
    00405AE1 |. |6A 00 |push 0 ;
    |pSecurity = NULL
    00405AE3 |. |6A FF |push -1 ; |hFile = FFFFFFFF
    00405AE5
    |. |E8 46E4FFFF |call ;
    \CreateFileMappingA
    00405AEA |. |A3 CC974000 |mov dword ptr
    ds:[4097CC],eax
    00405AEF |. |6A 00 |push 0 ; /MapSize = 0
    00405AF1 |. |6A
    00 |push 0 ; |OffsetLow = 0
    00405AF3 |. |6A 00 |push 0 ; |OffsetHigh =
    0
    00405AF5 |. |6A 06 |push 6 ; |AccessMode = 6
    00405AF7 |. |A1 CC974000
    |mov eax,dword ptr ds:[4097CC] ; |
    00405AFC |. |50 |push eax ; |hMapObject
    => NULL
    00405AFD |. |E8 36E5FFFF |call
    ; \MapViewOfFile
    呵呵,木马打开自身准备操作了
    跟进00405AC6处的 call 00406D1C
    看下面的代码
    00406D55 . 6A 00
    push 0 ; /pFileSizeHigh = NULL
    00406D57 . 56 push esi ; |hFile
    00406D58 .
    E8 53D2FFFF call;
    \GetFileSize
    00406D5D . 8945 FC mov dword ptr ss:[ebp-4],eax
    00406D60 .
    8B45 FC mov eax,dword ptr ss:[ebp-4]
    00406D63 . E8 20B7FFFF call
    dumped_.00402488
    00406D68 . 8BD8 mov ebx,eax
    00406D6A . 6A 00 push 0 ;
    /pOverlapped = NULL
    00406D6C . 8D45 FC lea eax,dword ptr ss:[ebp-4] ;
    |
    00406D6F . 50 push eax ; |pBytesRead
    00406D70 . 8B45 FC mov eax,dword
    ptr ss:[ebp-4] ; |
    00406D73 . 50 push eax ; |BytesToRead
    00406D74 . 53
    push ebx ; |Buffer
    00406D75 . 56 push esi ; |hFile
    00406D76 . E8 D5D2FFFF
    call; \ReadFile
    00406D9D .^\75 EF jnz short dumped_.00406D8E
    00406D9F > 8B55 FC mov
    edx,dword ptr ss:[ebp-4]
    00406DA2 . 8BC3 mov eax,ebx
    00406DA4 . E8
    FFB6FFFF call dumped_.004024A8
    00406DA9 . 56 push esi ; /hObject
    00406DAA
    . E8 61D1FFFF call;
    \CloseHandle
    00406DAF . 817D F8 80000000 cmp dword ptr
    ss:[ebp-8],80
    00406DB6 . 74 11 je short dumped_.00406DC9
    00406DB8 > 6A
    00 push 0 ; /ExitCode = 0
    00406DBA . E8 99D1FFFF call
     ; \ExitProcess
    00406DBF .^\E9 73FFFFFF
    jmp dumped_.00406D37
    00406DC4 . E8 13C7FFFF call dumped_.004034DC
    木马通过上面的代码验证自身的大小,如果大小与预定值不符,则ExitProcess
    解除自校验也很简单
    把00406DB6 处的 je short 00406DC9改成绝对转跳就OK了
    jmp short 00406DC9
    改好以后另存为exe就好了
     

    字体:
     
    设为主页 收藏本站 联系我们 友情连接 商务合作 网友留言
    Copyright©2006-2008 中华网络安全联盟 All rights reserved.