TLS-callback
Jump to navigation
Jump to search
Description
Among the different anti-reverse / anti-debugging techniques, there is one which is called the Thread Local Storage (TLS) callback.
TLS callback functions are actually executed before executing code at the traditional Original Entry Point (OEP).
Bypassing the TLS callback anti-debugging technique
Modifying OllyDbg's default options
If you try to load such a malware in OllyDbg with the default options, you will notice that it stops (see the Terminated status):
On way to bypass it is to reconfigure OllyDbg to pause at "system breakpoint" instead of the default "WinMain":
Finding the TLS callback
To find the TLS callback, open the malware in IDA Pro and press Ctrl+E:
You can also use pescanner.py:
$ ./pescanner.py /data/tmp/Malware/isi32.exe
################################################################################
Record 0
################################################################################
Meta-data
================================================================================
File: /data/tmp/Malware/isi32.exe
Size: 21873 bytes
Type: PE32 executable (GUI) Intel 80386, for MS Windows
MD5: 7a4d1babde751f080cc65a306a0ae79c
SHA1: dafe57b9c86466f687b91e153bdec7838fb70d35
ssdeep:
Date: 0x47EC14D6 [Thu Mar 27 21:42:46 2008 UTC]
EP: 0x410e95 x1nz8z8s 3/4 [SUSPICIOUS]
CRC: Claimed: 0x13165, Actual: 0x13165
Packers: EXECryptor 2.2.4 -> Strongbit/SoftComplete Development
TLS callbacks
================================================================================
0x410ea1
Sections
================================================================================
Name VirtAddr VirtSize RawSize Entropy
--------------------------------------------------------------------------------
.packed 0x1000 0x7000 0x0 0.000000 [SUSPICIOUS]
.RLPack 0x8000 0x3000 0x0 0.000000 [SUSPICIOUS]
10rntbk3 0xb000 0x1000 0x15 4.070656
x1nz8z8s 0xc000 0x5000 0x4f71 7.961965 [SUSPICIOUS]
Using Olly Advanced
You can also use the Olly Advanced plugin in OllyDbg to setup the "Break on TLS Callback" option:



