<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>anti-debug on Reverse Engineering</title>
    <link>https://reverse.put.as/tags/anti-debug/</link>
    <description>Recent content in anti-debug on Reverse Engineering</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <managingEditor>reverser@put.as (fG!)</managingEditor>
    <webMaster>reverser@put.as (fG!)</webMaster>
    <copyright>&amp;copy; 2025 fG!</copyright>
    <lastBuildDate>Tue, 31 Jan 2012 23:33:45 +0100</lastBuildDate><atom:link href="https://reverse.put.as/tags/anti-debug/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Anti-debug trick #1: Abusing Mach-O to crash GDB</title>
      <link>https://reverse.put.as/2012/01/31/anti-debug-trick-1-abusing-mach-o-to-crash-gdb/</link>
      <pubDate>Tue, 31 Jan 2012 23:33:45 +0100</pubDate>
      <author>reverser@put.as (fG!)</author>
      <guid>https://reverse.put.as/2012/01/31/anti-debug-trick-1-abusing-mach-o-to-crash-gdb/</guid>
      <description>I developed this funny trick while trying to find a solution for a problem in a project. It is pretty easy to implement and fun.
The trick consists in abusing the offset field in the dylib_command and pointing it to somewhere else. From the Mach-O File Format Reference document, the command structures are:
struct dylib_command { uint_32 cmd; uint_32 cmdsize; struct dylib dylib; } struct dylib { union lc_str name; uint_32 timestamp; uint_32 current_version; uint_32 compatibility_version; } union lc_str { uint32_t offset; #ifndef __LP64__ char *ptr; #endif } The definition of the offset field is:</description>
    </item>
    
  </channel>
</rss>
