IP Library › Granted Patent US 12,399,801
Granted Patent B2
US 12,399,801 · App. 18/598,003 · Granted Aug 26, 2025

Method for blocking external debugger application from analysing code of software program

Inventor: Aki Immonen (Espoo, FI)
Assignee: Supercell Oy
G06F11/3612G06F11/3624G06F11/3656G06F21/71
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,399,801
App. No.
18/598,003
Granted
Aug 26, 2025
Kind
B2
Abstract

A method for blocking external debugger application from analysing code of software program installed on computing device. The method including initializing software program including an application program and an internal debugger application. The software program, upon initialization thereof, instructs internal debugger application to load application program in internal debugger application. The internal debugger application is configured to utilize kernel resources of an operating system of the computing device. The method includes executing internal debugger application to set one or more break-points in code of application program to define execution path for code of application program, executing application program as per defined execution path for code thereof, stopping execution of code of application program upon reaching any of one or more break-points therein, and handing control to internal debugger application to provide an address for next instruction to be executed in defined execution path for code of application program.

Claims (30)

1. A method for blocking an external debugger application from analysing code of an application program installed on a computing device, the method comprising:

inserting one or more break-points in the code of the application program after one or more instruction sets of the code of the application program;

executing the application program during run time according to a first execution path;

suspending execution of the code of the application program in the first execution path upon reaching one of the one or more break-points;

handing control of the execution of the application program to an internal debugger application via a second execution path, wherein the internal bugger application provides an address for a next instruction to be executed in a third execution path of the code of the application program, wherein the code of the application program includes multiple code blocks, and wherein the one or more break-points include instructions to move from a current code block in the first execution path to another code block corresponding to the address for the next instruction in the third execution path; and

continuing execution of the application program in the third execution path.

2. The method according to claim 1 , wherein the one or more break-points are set at an end of a code block.

3. The method according to claim 1 , wherein the application program is a gaming application program.

4. The method according to claim 1 , wherein execution of the application program causes the internal debugger application to load the application program in the internal debugger application, and wherein the internal debugger application inserts the one or more break-points in code of the application program.

5. The method according to claim 1 , the method further comprising initializing the application program, loading the internal debugger application, loading the application program in the internal debugger application and causing the application program to run in the internal debugger application during run time.

6. A computer program product comprising a non-transitory machine-readable data storage medium having stored thereon program instructions, which when accessed by a processing device of a computing device, will cause the computing device to:

insert one or more break-points in code of an application program after one or more instruction sets of the code of the application program;

execute the application program during run time according to a first execution path;

suspend execution of the code of the application program in the first execution path upon reaching one of the one or more break-points;

hand control of the execution of the application program to an internal debugger application via a second execution path, wherein the internal bugger application provides an address for a next instruction to be executed in a third execution path of the code of the application program, wherein the code of the application program includes multiple code blocks, and wherein the one or more break-points include instructions to move from a current code block in the first execution path to another code block corresponding to the address for the next instruction in the third execution path; and

continue execution of the application program in the third execution path.

7. The computer program product according to claim 6 , wherein the program instructions, when accessed by the processing device, will cause the computing device to set the one or more break-points at an end of a code block.

8. The computer program product according to claim 6 , wherein the application program is a gaming application program.

9. The computer program product according to claim 6 , wherein execution of the application program causes the internal debugger application to load the application program in the internal debugger application, and wherein the internal debugger application inserts the one or more break-points in the code of the application program.

10. The computer program product according to claim 6 , wherein the program instructions, when accessed by the processing device, will cause the computing device to initialize the application program, load the internal debugger application, load the application program in the internal debugger application and cause the application program to run in the internal debugger application during run time.

11. A computing device for blocking an external debugger application from analysing a code of an application program installed on the computing device, the computing device comprising a hardware processor device, the hardware processor executing non-transitory machine readable instructions to cause the computing device to:

insert one or more break-points defining an execution path in code of the application program after one or more instruction sets of the code of the application program;

execute the application program during run time according to a first execution path;

stop execution of the code of the application program in the first execution path upon reaching one of the one or more break-points;

hand control of the execution of the application program to the internal debugger application via a second execution path, wherein the internal debugger application provides an address for a next instruction to be executed in a third execution path of the code of the application program, wherein the code of the application program includes multiple code blocks, and wherein the one or more break-points include instructions to move from a current code block in the first execution path to another code block corresponding to the address for the next instruction in the third execution path; and

continuing execution of the application program in the third execution path.

12. The computing device according to claim 11 , wherein the one or more break-points are set at an end of a code block.

13. The computing device according to claim 11 , wherein the application program is a gaming application program.

14. The computing device according to claim 11 , wherein execution of the non-transitory machine readable instructions causes the computing device to cause the internal debugger application to load the application program in the internal debugger application, and wherein the internal debugger application inserts the one or more break-points in code of the application program.

15. The computing device according to claim 11 , wherein execution of the non-transitory machine readable instructions causes the computing device to initialize the application program, load the internal debugger application, load the application program in the internal debugger application and cause the application program to run in the internal debugger application during run time.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 8, 2024
From: IMMONEN, AKI
To: SUPERCELL OY
Reel/Frame 066691/0874 →
Continuity (4)
Continuation 18170646 · Feb 17, 2023
Continuation 17542575 · Dec 6, 2021
Continuation 16736242 · Jan 7, 2020
Related Publication 20240289250A1 · Aug 29, 2024
References Cited (22)
US 9703950B2 · Vandergeest · 2017 [cited by examiner]
US 10255414B2 · Horning · 2019 [cited by examiner]
US 20060137016A1 · Margalit · 2006 [cited by examiner]
US 20090282474A1 · Chen et al. · 2009 [cited by applicant]
US 20100095281A1 · Raber · 2010 [cited by applicant]
US 20190286551A1 · Volckaert et al. · 2019 [cited by applicant]
CN 102708322A · 2012 [cited by applicant]
CN 110088736A · 2019 [cited by applicant]
EP 2023248A1 · 2009 [cited by applicant]
JP 2019537150A · 2019 [cited by applicant]
KR 1020180084577A · 2018 [cited by applicant]
KR 1020190076217A · 2019 [cited by applicant]
KR 1020190090810A · 2019 [cited by applicant]
WO 2007125911A1 · 2007 [cited by applicant]
Lee, Jinyong, et al. “Efficient dynamic information flow tracking on a processor with core debug interface.” Proceedings of the 52nd Annual Design Automation Conference. 2015. pp. 1-6 (Year: 2015). [cited by examiner]
Krohn, Maxwell, et al. “Information flow control for standard OS abstractions.” ACM SIGOPS Operating Systems Review 41.6 (2007): pp. 321-334. (Year: 2007). [cited by examiner]
Chen, Wen, and Jayanta Bhadra. “Striking a balance between SoC security and debug requirements.” 2016 29th IEEE International System-on-Chip Conference (SOCC). IEEE, 2016. pp. 1-6 (Year: 2016). [cited by examiner]
China National Intellectual Property Administration, First Office Action, Application No. 202080084684.1, mailed Feb. 14, 2025, 2 pages, English Translation 2 pages. [cited by applicant]
China National Intellectual Property Administration, Search Report, Application No. 202080084684.1, mailed Feb. 14, 2025, 2 pages, English Translation 2 pages. [cited by applicant]
Raber et al. “Stealthy Profiling and Debugging of Malware”, 2011 18th Working Conference on Reverse Engineering, Published Oct. 31, 2011, DOI 10.1109/WCRE.2011.62, 2 pages. [cited by applicant]
Korean Intellectual Property Office, Notice of Non-Final Rejection, Application No. 10-2022-7020221, mailed May 2, 2025, 82 pages, English Translation 7 pages. [cited by applicant]
Japan Patent Office, Notice of Reasons of Refusal, Application No. 2022-533318, dated Jan. 7, 2025, 5 pages, English Translation 4 pages. [cited by applicant]