US 11,698,950 B2
Cyclically dependent checks for software tamper-proofing
Johan Wehrli, Bussigny (CH); and Julien Rinaldini, Lausanne (CH)
Assigned to SNAP INC., Santa Monica, CA (US)
Filed by Snap Inc., Santa Monica, CA (US)
Filed on Aug. 2, 2021, as Appl. No. 17/391,804.
Application 17/391,804 is a continuation of application No. 16/653,631, filed on Oct. 15, 2019, granted, now 11,080,373.
Application 16/653,631 is a continuation of application No. 15/680,852, filed on Aug. 18, 2017, granted, now 10,467,390.
Claims priority of provisional application 62/376,416, filed on Aug. 18, 2016.
Prior Publication US 2022/0058243 A1, Feb. 24, 2022
This patent is subject to a terminal disclaimer.
Int. Cl. H04L 29/06 (2006.01); G06F 21/14 (2013.01); G06F 8/41 (2018.01); G06F 8/51 (2018.01)
CPC G06F 21/14 (2013.01) [G06F 8/443 (2013.01); G06F 8/51 (2013.01)] 19 Claims
OG exemplary drawing
 
1. A system comprising:
a processor; and
memory coupled to the processor and storing instructions that, when executed by the processor, cause the system to perform operations comprising:
selecting at least two basic blocks from a plurality of basic blocks for a compilation unit;
selecting a check routine that returns a check value as a function of an area of memory of the selected at least two basic blocks; and
inserting code into the selected at least two basic blocks to compute a starting address of a next basic block to be executed based on a result collected from the selected check routine,
wherein each basic block is located at a respective starting address, wherein selecting the at least two basic blocks, selecting the check routine, and inserting the code to dynamically compute the starting address are performed at compilation time for a piece of software.