Patents by Inventor Kenneth Dean JOHNSON

Kenneth Dean JOHNSON has filed for patents to protect the following inventions. This listing includes patent applications that are pending as well as patents that have already been granted by the United States Patent and Trademark Office (USPTO).

  • Patent number: 11922168
    Abstract: A program is executed using a call stack and shadow stack. The call stack includes frames having respective return addresses. The frames may also store variables and/or parameters. The shadow stack stores duplicates of the return addresses in the call stack. The call stack and the shadow stack are maintained by, (i) each time a function is called, adding a corresponding stack frame to the call stack and adding a corresponding return address to the shadow stack, and (ii) each time a function is exited, removing a corresponding frame from the call stack and removing a corresponding return address from the shadow stack. A backtrace of the program's current call chain is generated by accessing the return addresses in the shadow stack. The outputted backtrace includes the return addresses from the shadow stack and/or information about the traced functions that is derived from the shadow stack's return addresses.
    Type: Grant
    Filed: March 23, 2022
    Date of Patent: March 5, 2024
    Assignee: Microsoft Technology Licensing, LLC
    Inventors: Ben Niu, Gregory John Colombo, Weidong Cui, Jason Lin, Kenneth Dean Johnson
  • Publication number: 20230259371
    Abstract: Dynamically overriding a function based on a capability set. A computer system reads a portion of an executable image file. The portion includes a first memory address corresponding to a first callee function implementation. The first memory address was inserted into the portion by a compiler toolchain. Based on extensible metadata included in the executable image file, and based on a capability set that is specific to the computer system, the computer system determines a second memory address corresponding to a second callee function implementation. Before execution of the portion, the computer system modifies the portion to replace the first memory address with the second memory address.
    Type: Application
    Filed: April 19, 2022
    Publication date: August 17, 2023
    Inventors: Pranav KANT, Joseph Norman BIALEK, Xiang FAN, YongKang ZHU, Gabriel Thomas Kodjo DOS REIS, Russell Bivens KELDORPH, Mehmet IYIGUN, Russell Charles HADLEY, Roy WILLIAMS, Kenneth Dean JOHNSON, Pedro Miguel SEQUEIRA DE JUSTO TEIXEIRA, Yevgeniy BAK
  • Patent number: 11720374
    Abstract: Dynamically overriding a function based on a capability set. A computer system reads a portion of an executable image file. The portion includes a first memory address corresponding to a first callee function implementation. The first memory address was inserted into the portion by a compiler toolchain. Based on extensible metadata included in the executable image file, and based on a capability set that is specific to the computer system, the computer system determines a second memory address corresponding to a second callee function implementation. Before execution of the portion, the computer system modifies the portion to replace the first memory address with the second memory address.
    Type: Grant
    Filed: April 19, 2022
    Date of Patent: August 8, 2023
    Assignee: Microsoft Technology Licensing, LLC
    Inventors: Pranav Kant, Joseph Norman Bialek, Xiang Fan, YongKang Zhu, Gabriel Thomas Kodjo Dos Reis, Russell Bivens Keldorph, Mehmet Iyigun, Russell Charles Hadley, Roy Williams, Kenneth Dean Johnson, Pedro Miguel Sequeira De Justo Teixeira, Yevgeniy Bak
  • Patent number: 11709931
    Abstract: Enforcing shadow stack violations at module granularity, rather than at thread or process granularity. An exception is processed during execution of a thread based on code of an application binary, which is enabled for shadow stack enforcement, that calls an external module. The exception results from a mismatch between a return address popped from the thread's call stack and a return address popped from the thread's shadow stack. Processing the exception includes determining that the exception resulted from execution of an instruction in the external module, and determining whether or not the external module is enabled for shadow stack enforcement. Based at least on these determinations, execution of the thread is terminated when the external module is enabled for shadow stack enforcement, or the thread is permitted to continue executing when the external module is not enabled for shadow stack enforcement.
    Type: Grant
    Filed: June 6, 2022
    Date of Patent: July 25, 2023
    Assignee: Microsoft Technology Licensing, LLC
    Inventors: Jason Lin, Jin Lin, Gregory John Colombo, Niraj Majmudar, Mehmet Iyigun, Shayne Daniel Hiet-Block, Kenneth Dean Johnson
  • Publication number: 20220342983
    Abstract: Enforcing shadow stack violations at module granularity, rather than at thread or process granularity. An exception is processed during execution of a thread based on code of an application binary, which is enabled for shadow stack enforcement, that calls an external module. The exception results from a mismatch between a return address popped from the thread's call stack and a return address popped from the thread's shadow stack. Processing the exception includes determining that the exception resulted from execution of an instruction in the external module, and determining whether or not the external module is enabled for shadow stack enforcement. Based at least on these determinations, execution of the thread is terminated when the external module is enabled for shadow stack enforcement, or the thread is permitted to continue executing when the external module is not enabled for shadow stack enforcement.
    Type: Application
    Filed: June 6, 2022
    Publication date: October 27, 2022
    Inventors: Jason LIN, Jin LIN, Gregory John COLOMBO, Niraj MAJMUDAR, Mehmet IYIGUN, Shayne Daniel HIET-BLOCK, Kenneth Dean JOHNSON
  • Publication number: 20220214882
    Abstract: A program is executed using a call stack and shadow stack. The call stack includes frames having respective return addresses. The frames may also store variables and/or parameters. The shadow stack stores duplicates of the return addresses in the call stack. The call stack and the shadow stack are maintained by, (i) each time a function is called, adding a corresponding stack frame to the call stack and adding a corresponding return address to the shadow stack, and (ii) each time a function is exited, removing a corresponding frame from the call stack and removing a corresponding return address from the shadow stack. A backtrace of the program's current call chain is generated by accessing the return addresses in the shadow stack. The outputted backtrace includes the return addresses from the shadow stack and/or information about the traced functions that is derived from the shadow stack's return addresses.
    Type: Application
    Filed: March 23, 2022
    Publication date: July 7, 2022
    Inventors: Ben NIU, Gregory John COLOMBO, Weidong CUI, Jason LIN, Kenneth Dean JOHNSON
  • Patent number: 11379579
    Abstract: Enforcing shadow stack violations at module granularity, rather than at thread or process granularity. An exception is processed during execution of a thread based on code of an application binary, which is enabled for shadow stack enforcement, that calls an external module. The exception results from a mismatch between a return address popped from the thread's call stack and a return address popped from the thread's shadow stack. Processing the exception includes determining that the exception resulted from execution of an instruction in the external module, and determining whether or not the external module is enabled for shadow stack enforcement. Based at least on these determinations, execution of the thread is terminated when the external module is enabled for shadow stack enforcement, or the thread is permitted to continue executing when the external module is not enabled for shadow stack enforcement.
    Type: Grant
    Filed: March 24, 2020
    Date of Patent: July 5, 2022
    Assignee: Microsoft Technology Licensing, LLC
    Inventors: Jason Lin, Jin Lin, Gregory John Colombo, Niraj Majmudar, Mehmet Iyigun, Shayne Daniel Hiet-Block, Kenneth Dean Johnson
  • Patent number: 11294682
    Abstract: A program is executed using a call stack and shadow stack. The call stack includes frames having respective return addresses. The frames may also store variables and/or parameters. The shadow stack stores duplicates of the return addresses in the call stack. The call stack and the shadow stack are maintained by, (i) each time a function is called, adding a corresponding stack frame to the call stack and adding a corresponding return address to the shadow stack, and (ii) each time a function is exited, removing a corresponding frame from the call stack and removing a corresponding return address from the shadow stack. A backtrace of the program's current call chain is generated by accessing the return addresses in the shadow stack. The outputted backtrace includes the return addresses from the shadow stack and/or information about the traced functions that is derived from the shadow stack's return addresses.
    Type: Grant
    Filed: May 20, 2019
    Date of Patent: April 5, 2022
    Assignee: Microsoft Technology Licensing, LLC
    Inventors: Ben Niu, Gregory John Colombo, Weidong Cui, Jason Lin, Kenneth Dean Johnson
  • Publication number: 20210303680
    Abstract: Enforcing shadow stack violations at module granularity, rather than at thread or process granularity. An exception is processed during execution of a thread based on code of an application binary, which is enabled for shadow stack enforcement, that calls an external module. The exception results from a mismatch between a return address popped from the thread's call stack and a return address popped from the thread's shadow stack. Processing the exception includes determining that the exception resulted from execution of an instruction in the external module, and determining whether or not the external module is enabled for shadow stack enforcement. Based at least on these determinations, execution of the thread is terminated when the external module is enabled for shadow stack enforcement, or the thread is permitted to continue executing when the external module is not enabled for shadow stack enforcement.
    Type: Application
    Filed: March 24, 2020
    Publication date: September 30, 2021
    Inventors: Jason LIN, Jin LIN, Gregory John COLOMBO, Niraj MAJMUDAR, Mehmet IYIGUN, Shayne Daniel HIET-BLOCK, Kenneth Dean JOHNSON
  • Publication number: 20200371809
    Abstract: A program is executed using a call stack and shadow stack. The call stack includes frames having respective return addresses. The frames may also store variables and/or parameters. The shadow stack stores duplicates of the return addresses in the call stack. The call stack and the shadow stack are maintained by, (i) each time a function is called, adding a corresponding stack frame to the call stack and adding a corresponding return address to the shadow stack, and (ii) each time a function is exited, removing a corresponding frame from the call stack and removing a corresponding return address from the shadow stack. A backtrace of the program's current call chain is generated by accessing the return addresses in the shadow stack. The outputted backtrace includes the return addresses from the shadow stack and/or information about the traced functions that is derived from the shadow stack's return addresses.
    Type: Application
    Filed: May 20, 2019
    Publication date: November 26, 2020
    Inventors: Ben NIU, Gregory John COLOMBO, Weidong CUI, Jason LIN, Kenneth Dean JOHNSON