Leo_Jiang
May 25th, 2007, 02:14
This virus has only one signature record in AVP's database, as following:
First signature's offset is 0x22C4
First signature's checksum is 0x5A55596D
Second ...
Second ...
(I just anaylze the first signature, so i do not give other informations.)
I inject a dll into AVP32.EXE's process, and modified the CheckSum function in the avpbase.dll, let the CheckSum jmp to MyCheckSum in the injected dll.
In MyCheckSum function, i check the function's return value, when the value equal 0x5A55596D, i call 'int 3' for jump to debugger.
Then i use AVP32.EXE scan the virus file named "Backdoor.Win32.CFour", and in debugger i found the details of it's scanning.
"0x5A55596D = CheckSum(_Header + 0x22C4, 7)"
To ChEmical EnginEE: it is not "CRC(_Page_C+Offset(1), Length(1)"
At this time, the AVP's _Header is the PE headr(50 45 00 00 ...), the contents of _Page_A and _Page_B is the codes of PE's entry point. And the _Page_C is unknown. The data used in Checksum here is in _Page_C.
The _Page_C's data requals the data in file from 0x79F0, in virtual address is 0x4079F0(base image is 0x400000).
Why it was 0x79F0? How does AVP load data to _Page_C?
(The virus file could be got from "http://vx.netlux.org/"
First signature's offset is 0x22C4
First signature's checksum is 0x5A55596D
Second ...
Second ...
(I just anaylze the first signature, so i do not give other informations.)
I inject a dll into AVP32.EXE's process, and modified the CheckSum function in the avpbase.dll, let the CheckSum jmp to MyCheckSum in the injected dll.
In MyCheckSum function, i check the function's return value, when the value equal 0x5A55596D, i call 'int 3' for jump to debugger.
Then i use AVP32.EXE scan the virus file named "Backdoor.Win32.CFour", and in debugger i found the details of it's scanning.
"0x5A55596D = CheckSum(_Header + 0x22C4, 7)"
To ChEmical EnginEE: it is not "CRC(_Page_C+Offset(1), Length(1)"
At this time, the AVP's _Header is the PE headr(50 45 00 00 ...), the contents of _Page_A and _Page_B is the codes of PE's entry point. And the _Page_C is unknown. The data used in Checksum here is in _Page_C.
The _Page_C's data requals the data in file from 0x79F0, in virtual address is 0x4079F0(base image is 0x400000).
Why it was 0x79F0? How does AVP load data to _Page_C?
(The virus file could be got from "http://vx.netlux.org/"
