Skip to main content

Anti Reverse Engineering Mechanism and its Bypass - Part-2 - CheckRemoteDebuggerPresent()

This Part 2 of the Anti Reverse Engineering Mechanism Series. Here we will discuss about CheckRemoteDebuggerPresent API and how we can bypass the check.

Let us have a look at the implementation
So checkRemoteDebuggerAPI return a Non Zero Value if successful else it returns a Zero if no debugger detected.

if(IsDbgPresent) => True => Non Zero Value => Debugger Found!
if(IsDbgPresent) => False=> Zero => No Debugger Found!

So to bypass this we need to do the following

1. Give a breakpoint at CheckRemoteDebuggerPresent


2. Now we will step inside the code of CheckRemoteDebuggerApi

3. Now we will change instruction at 23. We will convert the CMP instruction to MOV instruction. I will explain it later why I will change it. Please note while we are doing this change the EAX value is 0 because in line 22 we are doing a XOR EAX, EAX, So here is the modification.
OLD =  7C85AB26 3945 08 CMP DWORD PTR SS:[EBP+8],EAX
NEW = 7C85AB26 3945 08 MOV DWORD PTR SS:[EBP+8],EAX

4. Now we will step through the functions till it exits the function and come to the actual code.


Now if you see , line 3 there is comparison again. So this DWORD PTR SS:[EBP-C] refers to the same stack segment where we did the change in instruction from CMP DWORD PTR SS:[EBP+8], EAX to MOV DWORD PTR SS:[EBP+8], EAX.  So this instruction actually pushed the value 0 to the stack segment which used to hold some non-zero value. So after coming out of the CheckRemoteDebuggerAPI this value i.e ( Zero ) is present in the SS:[EBP-C]. So the comparison of CMP DWORD PTR SS:[EBP-C],0 will lead the message box having message that "no debugger found". This condition is the IF condition of the C++ code which decides the flow based on the value returned to IsDbgPresent



Reference : https://www.codeproject.com/Articles/670193/Csharp-Detect-if-Debugger-is-Attached

Popular posts from this blog

KringleCon : Sans Holiday Hack 2018 Writeup

SANS HOLIDAY HACK 2018 Writeup , KRINGLECON The objectives  Orientation Challenge  Directory Browsing  de Bruijn Sequences  Data Repo Analysis  AD Privilege Discovery  Badge Manipulation  HR Incident Response  Network Traffic Forensics  Ransomware Recovery  Who Is Behind It All? First I go to Bushy Evergreen and try to solve the terminal challenge . Solving it is fairly easy , Escape_Key followed by  ":q" without quotes After this we move to the kiosk and solve the questions The question were based on the themes of previous Holiday Hack Challenges. Once we answer it correctly we get the flag. For this I visited Minty Candycane and I tried to solve the terminal challenge.  The application has command injection vulnerability , so injecting a system command with the server ip allows execution of the command. So first I perform an `ls` operation to list of the directory contents , followed by a cat of t

Linux Privilege Escalation : SUID Binaries

After my OSCP Lab days are over I decided to do a little research and learn more on Privilege Escalation as it is my weak area.So over some series of blog post I am going to share with you some information of what I have learnt so far. The methods mentioned over here are not my own. This is something what I have learnt by reading articles, blogs and solving CTFs SUID - Set User ID The binaries which has suid enabled, runs with elevated privileges. Suppose you are logged in as non root user, but this suid bit enabled binaries can run with root privileges. How does a SUID Bit enable binary looks like ? -r- s r-x---  1 hack-me-bak-cracked hack-me-bak         7160 Aug 11  2015 bak How to find all the SUID enabled binaries ? hack-me-bak2@challenge02:~$ find / -perm -u=s 2>/dev/null /bin/su /bin/fusermount /bin/umount /usr/lib/openssh/ssh-keysign /usr/lib/eject/dmcrypt-get-device /usr/lib/dbus-1.0/dbus-daemon-launch-helper /usr/bin/gpasswd /usr/bin/newgrp /usr/bin

Bluetooth Low Energy : Build, Recon,Enumerate and Attack !

Introduction In this post I will try to share some information on bluetooth low energy protocol. Bluetooth Low Energy ( BLE ) is Bluetooth 4.0.It has been widely used in creating "smart" devices like bulbs that can be controlled by mobile apps, or electrical switches that can be controlled by mobile apps. The terms Low Energy refers to multiple distinctive features that is operating on low power and lower data transfer. Code BLE Internals and Working The next thing what we need to know is a profile. Now every bluetooth device can be categorized based on certain specification which makes it easy. Here we will take a close look into two profiles of Bluetooth which is specifically designed for BLE. Generic Access Profile (GAP) - This profiles describes how two BLE devices defines discovery and establishment of connection with each other. There are two types of data payload that can be used. The Advertising Data Payload and Scan Response Payload . The GAP uses br