2K19 ISY 11 Assignment2 Hashcode and Packed Executable
2K19 ISY 11 Assignment2 Hashcode and Packed Executable
This Practical uses a client program that connects to server program on a remote device in a LAN using
its IP address. Since the client program is able to access the server program on a remote device, there
are several system calls that are made on the either side at kernel level.
The executable of Server and Client program are made as Client.exe and Server.exe iand the actions
performed on Client.exe are as follows:-
System Configuration.
RAM: - 8GB
HDD: - 1TB
CPU :- i5-6200u
Tools Used:-
WinMD5Free v1.20 GUI tool was used generate MD5. With GUI tool we need to provide the location of
the .exe file and the tool generates the hashcode for us.
Introduction
Working on NT and Win2K means that executables and object files will many times have embedded
UNICODE strings that you cannot easily see with a standard ASCII strings or grep programs. So we
decided to roll our own. Strings just scans the file you pass it for UNICODE (or ASCII) strings of a default
length of 3 or more UNICODE (or ASCII) characters. Note that it works under Windows 95 as well.
Using Strings
usage: strings [-a] [-f offset] [-b bytes] [-n length] [-o] [-q] [-s] [-u] <file or directory>
Strings takes wild-card expressions for file names, and additional command line parameters are defined
as follows:
USING STRINGS
Parameter Description
-a Ascii-only search (Unicode and Ascii is default)
-b Bytes of file to scan
-f File offset at which to start scanning.
-o Print offset in file string was located
-n Minimum string length (default is 3)
-s Recurse subdirectories
-u Unicode-only search (Unicode and Ascii is default)
-nobanner Do not display the startup banner and copyright message.
<Vt5<rt1<Kt-
~5<Stt<Zu1
\$ 3L$$3t$
l$`+l$l9l$t
T$ t.9|$Lt
9|$ }[+|$ 9
libgcc_s_dw2-1.dll
__register_frame_info
libgcj_s.dll
_Jv_RegisterClasses
__deregister_frame_info
192.168.1.213
Can't start winsock, Err
Can't create socket,Err #
Can't connect to server,Err#
basic_string::_S_create
basic_string::at
basic_string::compare
basic_string::_S_construct NULL not valid
basic_string::basic_string
basic_string::substr
basic_string::copy
basic_string::append
basic_string::assign
basic_string::_M_replace_aux
basic_string::replace
basic_string::insert
basic_string::erase
basic_string::resize
std::exception
std::bad_exception
__gnu_cxx::__concurrence_lock_error
__gnu_cxx::__concurrence_unlock_error
basic_ios::clear
ios_base::_M_grow_words allocation failed
ios_base::_M_grow_words is not valid
__gnu_cxx::__concurrence_lock_error
__gnu_cxx::__concurrence_unlock_error
basic_string::_S_create
The bold lines in the above the text are the error statement in Clients.cpp.
Step 4: Packing Client.exe.
Malware writers often use packing or obfuscation to make their files more difficult to detect or analyze.
Obfuscated programs are ones whose execution the malware author has attempted to hide. Packed
programs are a subset of obfuscated programs in which the malicious program is compressed and
cannot be analyzed. Both techniques will severely limit your attempts to statically analyze the malware.
Legitimate programs almost always include many strings. Malware that is packed or obfuscated contains
very few strings. If upon searching a program with Strings, you find that it has only a few strings, it is
probably either obfuscated or packed, suggesting that it may be malicious.
tuvwddddxyz{
tiU_2u`E?_
D:HLLTP\^^^^TdXl\t`|^^^^d
48<@ddddDHLPddddTX\`dddddhlp
DVt5Lt1<Kt-
\G?Aw\4XD<so
a%ER222BBB
JpI %+xPkUU4
h,.=t%[@=M
Slibgcc_s_dw2-1.dll
ster_frame_info
}Jv_RIClassesldeq
wBsock, Err1c
ta faiZdW
+lx_:zth()=
N12_GLOBAL_
cdefABCDEl7
PRINTF_EXP
biv115\o2-0TRd
GNU C++ 4.
9U.7 lga/%,
1;~;5FrUcY^
D/AUR/lgw32/m
TEND_WITDA
We see that error lines in the Client.cpp are not visible in the packed version of Client.exe.