diff --git a/Dalamud/Game/SigScanner.cs b/Dalamud/Game/SigScanner.cs
index 1d4fc7df8..f27222a35 100644
--- a/Dalamud/Game/SigScanner.cs
+++ b/Dalamud/Game/SigScanner.cs
@@ -155,10 +155,25 @@ namespace Dalamud.Game {
if (IsCopy)
scanRet = new IntPtr(scanRet.ToInt64() - this.moduleCopyOffset);
+
+ if (Marshal.ReadByte(scanRet) == 0xE8)
+ return ReadCallSig(scanRet);
return scanRet;
}
+ ///
+ /// Helper for ScanText to get the correct address for
+ /// IDA sigs that mark the first CALL location.
+ ///
+ /// The address the CALL sig resolved to.
+ /// The real offset of the signature.
+ private IntPtr ReadCallSig(IntPtr SigLocation)
+ {
+ int jumpOffset = Marshal.ReadInt32(IntPtr.Add(SigLocation, 1));
+ return IntPtr.Add(SigLocation, 5 + jumpOffset);
+ }
+
///
/// Scan for a byte signature in the .data section.
///