I was playing with a piece of malware with Jun Yee and we came across an obfuscated string in the VB code. The malware itself was written in Microsoft Visual Basic 6. It has a feature that allows the malware to overwrite itself after execution just to make it a bit stealthier. Additionally, the virus itself contains an obfuscated string . Thanks to Jun Yi for helping me decrypt it faster.
Binary Hash: A2904D4E6527278C94EAC1FB2B665572
// rr.exe static string decryption script
// by: opcode0x90, 23 November 2010
//
#include
static DecryptString( cipher )
{
auto i, c;
// initialize
i = cipher;
for ( c = Word(i); c != 0; c = Word(i) )
{
// decrypt
if (c >= 0xC0 && c = 0xDA && c = 0xF4 && c <= 0xFD)
c = c - 196;
// replace original with decrypted char
PatchWord(i, c);
// move to next char
i = i + 2;
}
// convert entire decrypted cipher into unicode string
SetLongPrm(INF_STRTYPE, ASCSTR_UNICODE);
MakeStr(cipher, BADADDR);
}
static main()
{
auto funcaddr, x, y;
auto lpData;
// address to DecryptString() function
funcaddr = 0x0040B6FC;
// debug
for ( x = RfirstB0(funcaddr); x != BADADDR; x = RnextB0(funcaddr, x) )
{
lpData = Dword(x - 4);
// debug
Message(atoa(x) + ": " + atoa(lpData) + "\n");
// decrypt the string
DecryptString(lpData);
}
}