Re: Possible Virus

new topic     » goto parent     » topic index » view thread      » older message » newer message

Everett L.(Rett) Williams writes:
> files from RDS     pdex.exe  -  177,780
>                     ex.exe  -  177,468
>
> quarantined files  pdex.exe  -  185,780
>                     ex.exe  -  185,468

Thanks for sending me one of your quarantined files.
I compared the quarantined pdex.exe versus the
clean pdex.exe from our site. It took a bit of work
(using the tool below) but I can tell you that the
quarantined file is simply the clean file with an
extra 8000-byte block inserted at the front
*by Norton Antivirus itself*, plus Norton inverted
all the other bits in the file: 0 becomes 1,
1 becomes 0 in each byte.

Therefore, there is *no virus* in either the clean pdex.exe
or the "quarantined" version, unless you believe
that the clean pdex.exe on our site, which has been
downloaded and used for many months by many
thousands of people is tainted.

Obviously what happened is that Norton
erroneously raised a warning flag against
ex.exe and pdex.exe, probably because they are
compressed executables. Norton then proceeded to
create the quarantined versions of ex.exe and pdex.exe
by adding an 8000-byte information block and
inverting all the bits. The information block contains
things such as your name "Rett Williams", the
name of the suspected virus, a whole bunch of 0's etc.

Regards,
     Rob Craig
     Rapid Deployment Software
     http://www.RapidEuphoria.com


---------------------------------------------------------------

-- determine frequency of byte-values in a file
-- usage:
--    ex analyse > junk

-- the frequencies were totally mismatched, until
-- I sorted them and saw the inversion of bits

include sort.e
integer b, count

function analyse(sequence name, integer min, integer max)
-- get frequencies for file "name" from min byte to max byte
    integer fn
    sequence freq

    freq = repeat(0, 256)
    fn = open(name, "rb")
    count = 0
    while 1 do
         b = getc(fn)
         if b = -1 then
             exit
        end if
        if count >= min then
             freq[b+1] += 1
        end if
        count += 1
        if count = max then
             exit
        end if
    end while
    return freq
end function

function abs(atom x)
    if x < 0 then
        return -x
    else
        return x
    end if
end function

sequence f1, f2

f1 = sort(analyse("pdex.exe", 0, 999999))
for i = 1 to length(f1) do
    printf(1, "%5d", f1[i])
    if remainder(i, 12) = 0 then
        puts(1, '\n')
    end if
end for
puts(1, "\n\n")

f2 = sort(analyse("pdex.vir", 8000, 999999))
for i = 1 to length(f2) do
    printf(1, "%5d", f2[i])
    if remainder(i, 12) = 0 then
        puts(1, '\n')
    end if
end for
puts(1, "\n\n")

-- sum of differences
atom ss
ss = 0
for i = 1 to length(f1) do
     ss += abs(f1[i] - f2[i])
end for
? ss / length(f1)

-------------------------------

new topic     » goto parent     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu