RU2008104404A - Способ предотвращения обратного инжиниринга программного обеспечения, неавторизованной модификации и перехвата данных во время выполнения - Google Patents

Способ предотвращения обратного инжиниринга программного обеспечения, неавторизованной модификации и перехвата данных во время выполнения Download PDF

Info

Publication number
RU2008104404A
RU2008104404A RU2008104404/09A RU2008104404A RU2008104404A RU 2008104404 A RU2008104404 A RU 2008104404A RU 2008104404/09 A RU2008104404/09 A RU 2008104404/09A RU 2008104404 A RU2008104404 A RU 2008104404A RU 2008104404 A RU2008104404 A RU 2008104404A
Authority
RU
Russia
Prior art keywords
software
interpreter
net
metadata
cli
Prior art date
Application number
RU2008104404/09A
Other languages
English (en)
Other versions
RU2439669C2 (ru
Inventor
Керен АСИПОВ (IL)
Керен АСИПОВ
Борис АСИПОВ (IL)
Борис АСИПОВ
Original Assignee
Сикьюред Дайменшнс Лтд. (Il)
Сикьюред Дайменшнс Лтд.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=36648619&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=RU2008104404(A) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Сикьюред Дайменшнс Лтд. (Il), Сикьюред Дайменшнс Лтд. filed Critical Сикьюред Дайменшнс Лтд. (Il)
Publication of RU2008104404A publication Critical patent/RU2008104404A/ru
Application granted granted Critical
Publication of RU2439669C2 publication Critical patent/RU2439669C2/ru

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Storage Device Security (AREA)

Abstract

1. Способ предотвращения неавторизованной модификации программного обеспечения или неавторизованной модификации данных во время выполнения, содержащий этапы, на которых: ! a. предоставляют преобразователь, допускающий преобразование упомянутого программного обеспечения в обобщенный машинный код, обратный инжиниринг которого нельзя выполнить посредством использования процесса преобразования, который вызывает потерю данных; и ! b. предоставляют интерпретатор, в котором знание способа обработки сохраняется ограниченным; ! c. интерпретируют посредством упомянутого интерпретатора упомянутый общий машинный код в конкретный машинный код при восстановлении потерянных данных в ходе процесса интерпретации. ! 2. Способ по п.1, в котором интерпретатор компилируется посредством CLR. ! 3. Способ по п.1 или 2, в котором программное обеспечение разделяется так, что только часть программного обеспечения преобразуется с помощью преобразователя и интерпретируется интерпретатором. ! 4. Способ по п.1, в котором программным обеспечением является высокоуровневый язык. ! 5. Способ по п.4, в котором высокоуровневый язык - это язык на основе интерпретатора. ! 6. Способ по п.5, в котором высокоуровневым языком может быть один из следующего: Java, Visual J#, J#, C# или http://VB.NET. ! 7. Способ по п.4, в котором высокоуровневый язык - это язык на основе компилятора. ! 8. Способ по п.7, в котором высокоуровневым языком может быть один из следующего: C++, VB или Pascal. ! 9. Способ по п.1, в котором потеря данных в ходе преобразования состоит в удалении метаданных структуры кода. ! 10. Способ по п.1, в котором потеря данных в ходе преобразования состоит в преобразовании команд в друг�

Claims (28)

1. Способ предотвращения неавторизованной модификации программного обеспечения или неавторизованной модификации данных во время выполнения, содержащий этапы, на которых:
a. предоставляют преобразователь, допускающий преобразование упомянутого программного обеспечения в обобщенный машинный код, обратный инжиниринг которого нельзя выполнить посредством использования процесса преобразования, который вызывает потерю данных; и
b. предоставляют интерпретатор, в котором знание способа обработки сохраняется ограниченным;
c. интерпретируют посредством упомянутого интерпретатора упомянутый общий машинный код в конкретный машинный код при восстановлении потерянных данных в ходе процесса интерпретации.
2. Способ по п.1, в котором интерпретатор компилируется посредством CLR.
3. Способ по п.1 или 2, в котором программное обеспечение разделяется так, что только часть программного обеспечения преобразуется с помощью преобразователя и интерпретируется интерпретатором.
4. Способ по п.1, в котором программным обеспечением является высокоуровневый язык.
5. Способ по п.4, в котором высокоуровневый язык - это язык на основе интерпретатора.
6. Способ по п.5, в котором высокоуровневым языком может быть один из следующего: Java, Visual J#, J#, C# или http://VB.NET.
7. Способ по п.4, в котором высокоуровневый язык - это язык на основе компилятора.
8. Способ по п.7, в котором высокоуровневым языком может быть один из следующего: C++, VB или Pascal.
9. Способ по п.1, в котором потеря данных в ходе преобразования состоит в удалении метаданных структуры кода.
10. Способ по п.1, в котором потеря данных в ходе преобразования состоит в преобразовании команд в другие команды, которым соответствующий операнд(ы) определен во время выполнения.
11. Способ предотвращения декомпиляции и модификации во время выполнения кода программного обеспечения .NET/CLI с помощью средств, которые базируются на метаданных .NET/CLI, содержащий этапы, на которых:
a. предоставляют преобразователь, допускающий преобразование упомянутого программного обеспечения .NET/CLI в общий машинный код, причем упомянутое преобразование включает в себя потерю данных по метаданным .NET/CLI;
b. предоставляют новый интерпретатор, выполненный с возможностью интерпретации упомянутого общего машинного кода без требования наличия метаданных .NET/CLI, при этом упомянутый новый интерпретатор реализован как программный компонент на основе .NET/CLI для поддержания такого же уровня переносимости, что и упомянутый код программного обеспечения .NET/CLI; и
c. интерпретируют упомянутый общий машинный код в конкретный машинный код упомянутым интерпретатором.
12. Способ по п.11, в котором программное обеспечение разделяется так, что только часть программного обеспечения преобразуется с помощью преобразователя и интерпретируется новым интерпретатором.
13. Способ предотвращения подделки механизма вступления в силу условий лицензионного соглашения в среде .NET/CLI по п.11, в котром средства декомпиляции и модификации, которые основаны на метаданных .NET/CLI, становятся непригодными после применения упомянутого способа.
14. Способ по п.11 для шифрования кода .NET/CLI при преодолении отсутствия поддержки шифрования/расшифровки кода в .NET/CLI посредством выполнения частичной расшифровки исполняемой в данный момент функции, содержащий этапы, на которых:
a. применяют процесс симметричного шифрования к представлению общего машинного кода каждой преобразованной функции; и
b. расшифровывают каждую функцию общего машинного кода до исполнения посредством нового интерпретатора.
15. Способ по п.14, в котором симметричный ключ процесса шифрования доставляется пользователю программного обеспечения отдельно, тем самым делая неавторизованное исполнение программного обеспечения невозможным.
16. Способ по п.11, в котором различные реализации нового интерпретатора предоставляются производителям программного обеспечения, при этом упомянутый новый интерпретатор сформирован посредств выбора полного поднабора команд из избыточного набора команд и посредством динамического формирования преобразователя и .NET/CLI-сборки реализации упомянутого нового интерпретатора с помощью .NET Framework System.CodeDom API, System.Reflection.Emit API или непосредственного формирования исходного кода на языке .NET.
17. Способ по п.11, в котором различные реализации нового интерпретатора предоставляются производителям программного обеспечения посредством применения процесса сбивания с толку с помощью различных схем переименования метаданных в одной базовой реализации .NET/CLI упомянутого нового интерпретатора для предоставления возможности упомянутым метаданным отображаться по-разному в средствах декомпиляции.
18. Способ по пп.16 и 17, в котором новый интерпретатор сформирован посредством выбора полного поднабора команд из избыточного набора команд и посредством динамического формирования преобразователя и .NET/CLI-сборки реализации упомянутого нового интерпретатора с помощью .NET Framework System.CodeDom API, System.Reflection.Emit API или непосредственного формирования исходного кода на языке .NET, а также посредством применения процесса сбивания с толку с помощью различных схем переименования метаданных той же самой базовой реализации .NET/CLI упомянутого нового интерпретатора для предоставления возможности упомянутым метаданным отображаться по-разному в средствах декомпиляции.
19. Способ предотвращения декомпиляции и модификации во время выполнения кода программного обеспечения Java с помощью средств, которые базируются на метаданных класса Java, содержащий этапы, на которых:
a. предоставляют преобразователь, выполненный с возможностью преобразования упомянутого кода программного обеспечения Java в общий машинный код, причем упомянутое преобразование включает в себя потерю данных по метаданным Java;
b. предоставляют новый интерпретатор, выполненный с возможностью интерпретации упомянутого общего машинного кода без требования метаданных класса Java, при этом упомянутый новый интерпретатор реализован как программный компонент на основе Java для поддержания такого же уровня переносимости, что и упомянутый код программного обеспеченич Java; и
c. интерпретируют посредством упомянутого интерпретатора упомянутый общий машинный код в конкретный машинный код.
20. Способ по п.19, в котором программное обеспечение разделяется так, что только часть программного обеспечения преобразуется с помощью преобразователя и интерпретируется новым интерпретатором.
21. Способ предотвращения подделки механизма вступления в силу условий лицензионного соглашения в среде Java по п. 11, в котором средства декомпиляции и модификации, которые основаны на метаданных .NET/CLI, становятся непригодными после применения упомянутого способа.
22. Способ по п.19 для шифрования кода Java при преодолении отсутствия поддержки шифрования/расшифровки кода в Java VM посредством выполнения частичной расшифровки в исполняемую в данный момент функцию, содержащий этапы, на которых:
a. применяют процесс симметричного шифрования к представлению общего машинного кода каждой преобразованной функции; и
b. расшифровывают каждую функцию общего машинного кода до исполнения новым интерпретатором.
23. Способ по п.22, в котором симметричный ключ процесса шифрования доставляется пользователю программного обеспечения отдельно, тем самым делая неавторизованное исполнение программного обеспечения невозможным.
24. Способ по п.19, в котором различные реализации нового интерпретатора предоставляются производителям программного обеспечения, при этом упомянутый новый интерпретатор сформирован посредством выбора полного поднабора команд из избыточного набора команд и посредством динамического формирования преобразователя и реализации упомянутого нового интерпретатора.
25. Способ по п.19, в котором различные реализации нового интерпретатора предоставляются производителям программного обеспечения посредством применения процесса сбивания с толку с помощью различных схем переименования метаданных в одной базовой реализации Java упомянутого нового интерпретатора для предоставления возможности упомянутым метаданным отображаться по-разному в средствах декомпиляции.
26. Способ по пп.24 и 25, в котором новый интерпретатор сформирован посредством выбора полного поднабора команд из избыточного набора команд и посредством динамического формирования преобразователя и реализации упомянутого нового интерпретатора, а также посредством применения процесса сбивания с толку с помощью различных схем переименования метаданных в той же самой базовой реализации упомянутого нового интерпретатора для предоставления возможности упомянутым метаданным отображаться по-разному в средствах декомпиляции.
27. Способ по п.11, в котором использование инструментальных средств, которые базируются на метаданных .NET/CLI, для подделки механизма вступления в силу условий лицензионного соглашения предотвращается посредством использования архитектуры нового интерпретатора для того, чтобы осуществлять вызовы между преобразованными методами.
28. Способ по п.19, в котором использование инструментальных средств, которые базируются на метаданных класса Java, для подделки механизма вступления в силу условий лицензионного соглашения предотвращается посредством использования архитектуры нового интерпретатора для того, чтобы осуществлять вызовы между преобразованными методами.
RU2008104404/08A 2005-08-06 2006-03-30 Способ предотвращения обратного инжиниринга программного обеспечения, неавторизованной модификации и перехвата данных во время выполнения RU2439669C2 (ru)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US59580205P 2005-08-06 2005-08-06
US60/595,802 2005-08-06

Publications (2)

Publication Number Publication Date
RU2008104404A true RU2008104404A (ru) 2009-08-10
RU2439669C2 RU2439669C2 (ru) 2012-01-10

Family

ID=36648619

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2008104404/08A RU2439669C2 (ru) 2005-08-06 2006-03-30 Способ предотвращения обратного инжиниринга программного обеспечения, неавторизованной модификации и перехвата данных во время выполнения

Country Status (5)

Country Link
US (2) US8352929B2 (ru)
CN (1) CN101300584B (ru)
BR (1) BRPI0614089A8 (ru)
RU (1) RU2439669C2 (ru)
WO (1) WO2007017856A1 (ru)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007017856A1 (en) 2005-08-06 2007-02-15 Secured Dimensions Ltd. Method for preventing software reverse engineering, unauthorized modification, and runtime data interception
US8464207B2 (en) * 2007-10-12 2013-06-11 Novell Intellectual Property Holdings, Inc. System and method for tracking software changes
CN100474253C (zh) * 2007-11-22 2009-04-01 北京飞天诚信科技有限公司 .Net程序保护方法及装置
US8776016B2 (en) * 2009-10-29 2014-07-08 Red Hat, Inc. Integration of structured profiling data with source data in the eclipse development environment
US8561032B2 (en) * 2009-11-04 2013-10-15 Red Hat, Inc. Visualizing thread life time in eclipse
US8789024B2 (en) * 2009-11-04 2014-07-22 Red Hat, Inc. Integration of visualization with source code in the Eclipse development environment
US8683452B1 (en) * 2010-12-21 2014-03-25 Emc Corporation Dynamically obfuscated javascript
JP6133409B2 (ja) * 2012-05-25 2017-05-24 コーニンクレッカ フィリップス エヌ ヴェKoninklijke Philips N.V. プログラムのリバースエンジニアリング及び/又は改竄に対する保護のための方法、システム及び装置
US9152801B2 (en) * 2012-06-28 2015-10-06 Steven W. Cooke Cryptographic system of symmetric-key encryption using large permutation vector keys
CN103218551B (zh) * 2013-05-03 2016-04-06 飞天诚信科技股份有限公司 一种保护java程序的方法
US9392084B2 (en) * 2014-01-06 2016-07-12 International Business Machines Corporation Recovery of a network infrastructure to facilitate business continuity
US9659156B1 (en) * 2014-03-20 2017-05-23 Symantec Corporation Systems and methods for protecting virtual machine program code
US9715433B2 (en) * 2014-08-29 2017-07-25 Netapp, Inc. Reconciliation in sync replication
RU2635271C2 (ru) * 2015-03-31 2017-11-09 Закрытое акционерное общество "Лаборатория Касперского" Способ категоризации сборок и зависимых образов
RU2628920C2 (ru) * 2015-03-31 2017-08-22 Закрытое акционерное общество "Лаборатория Касперского" Способ обнаружения вредоносных сборок
CN105279399A (zh) * 2015-10-30 2016-01-27 百度在线网络技术(北京)有限公司 应用防破解方法和装置
RU2625052C1 (ru) * 2016-03-18 2017-07-11 Акционерное общество "Лаборатория Касперского" Способ ограничения доступа образа машинного кода к ресурсам операционной системы
WO2018081093A1 (en) * 2016-10-24 2018-05-03 Clark Carl M Software algorithm security
CN107292131A (zh) * 2017-06-21 2017-10-24 北京深思数盾科技股份有限公司 软件保护方法和装置
RU2720254C1 (ru) * 2019-12-05 2020-04-28 Акционерное общество "Актив-софт" (АО "Актив-софт") Способ восстановления и обновления программного обеспечения на смарт-карте
US11347500B2 (en) 2020-06-17 2022-05-31 Bank Of America Corporation Software code converter for resolving conflicts during code development
US11782685B2 (en) 2020-06-17 2023-10-10 Bank Of America Corporation Software code vectorization converter
US11573775B2 (en) 2020-06-17 2023-02-07 Bank Of America Corporation Software code converter for resolving redundancy during code development
CN112241519A (zh) * 2020-11-05 2021-01-19 王志平 一种软件版权保护的实现方法
CN112642157B (zh) * 2020-12-31 2023-04-28 广州华多网络科技有限公司 代理开发控制方法及其相应的装置、设备、介质

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5293576A (en) 1991-11-21 1994-03-08 Motorola, Inc. Command authentication process
AUPN002594A0 (en) * 1994-12-13 1995-01-12 Dunn, Alexander Atkinson Improvements in software for the protection of executable programs, libraries and their data
US6334189B1 (en) * 1997-12-05 2001-12-25 Jamama, Llc Use of pseudocode to protect software from unauthorized use
US7430670B1 (en) * 1999-07-29 2008-09-30 Intertrust Technologies Corp. Software self-defense systems and methods
RU2183051C2 (ru) 2000-04-12 2002-05-27 Военный университет связи Способ формирования ключа шифрования/дешифрования
US7237123B2 (en) * 2000-09-22 2007-06-26 Ecd Systems, Inc. Systems and methods for preventing unauthorized use of digital content
AU2001292910B2 (en) * 2000-09-22 2008-05-01 Sca Ipla Holdings, Inc. Systems and methods for preventing unauthorized use of digital content
DE10108487A1 (de) 2001-02-22 2002-09-12 Giesecke & Devrient Gmbh Verfahren und System zur verteilten Erstellung eines Programms für einen programmierbaren, tragbaren Datenträger
CA2348355A1 (en) 2001-05-24 2002-11-24 Cloakware Corporation General scheme of using encodings in computations
US7383443B2 (en) 2002-06-27 2008-06-03 Microsoft Corporation System and method for obfuscating code using instruction replacement scheme
JP4105158B2 (ja) * 2002-06-28 2008-06-25 シャープ株式会社 薄板製造方法および薄板製造装置
US7093119B2 (en) * 2002-07-16 2006-08-15 International Business Machines Corporation Methods and computer program products for protecting source code of an interpreted programming language
US20040128260A1 (en) 2002-12-30 2004-07-01 Nokia, Inc. Method and system for protecting against unauthorized modification of products
JP4193607B2 (ja) 2003-06-26 2008-12-10 日本電気株式会社 データフロー制御方式、方法、およびプログラム
GB2405958A (en) 2003-08-20 2005-03-16 Macrovision Europ Ltd Code obfuscation and controlling a processor by emulation
US7366914B2 (en) 2003-08-29 2008-04-29 Intel Corporation Source code transformation based on program operators
RU2329615C2 (ru) 2003-12-01 2008-07-20 Самсунг Электроникс Ко., Лтд. Способ масштабируемого кодирования и декодирования видеосигнала и устройство для его осуществления
WO2007017856A1 (en) 2005-08-06 2007-02-15 Secured Dimensions Ltd. Method for preventing software reverse engineering, unauthorized modification, and runtime data interception

Also Published As

Publication number Publication date
BRPI0614089A2 (pt) 2011-03-09
US8938727B2 (en) 2015-01-20
US8352929B2 (en) 2013-01-08
RU2439669C2 (ru) 2012-01-10
US20100313188A1 (en) 2010-12-09
US20130125243A1 (en) 2013-05-16
WO2007017856A1 (en) 2007-02-15
CN101300584B (zh) 2012-02-29
BRPI0614089A8 (pt) 2017-01-17
CN101300584A (zh) 2008-11-05

Similar Documents

Publication Publication Date Title
RU2008104404A (ru) Способ предотвращения обратного инжиниринга программного обеспечения, неавторизованной модификации и перехвата данных во время выполнения
CN102043932B (zh) 一种防止Java程序被反编译的方法
CN108932406B (zh) 虚拟化软件保护方法和装置
KR101597251B1 (ko) 소프트웨어 애플리케이션들의 화이트­박스 구현들을 생성하는 시스템 및 방법
US8756434B2 (en) System and method for executing an encrypted binary from a memory pool
KR101328012B1 (ko) 애플리케이션 코드 난독화 장치 및 그 방법
KR101490047B1 (ko) 자가변환 기반 애플리케이션 코드 난독화 장치 및 그 방법
CN102831342A (zh) 一种提高安卓系统中应用程序保护强度的方法
JP2006344213A (ja) ソフトウェアモジュールの独立性を保障するデータベースアプリケーションを具現するシステム及び方法
CN106548046B (zh) 一种保护代码的装置和方法
CN104091100A (zh) 一种基于编译中间结果的软件保护方法
US20180373848A1 (en) A build system with plugins for encryption of application components
CN101957903A (zh) 一种保护类文件的方法和装置
WO2012146080A1 (zh) 一种软件保护方法和装置
CN105574368A (zh) 一种Python程序模块的安全调用方法和装置
CN110147656A (zh) 一种Node.js的代码加密及底层运行时解密办法
CN112966227A (zh) 代码加密解密方法和装置、存储介质
CN105825142A (zh) 用于对移动终端中文档加解密的方法和装置
CN107871066B (zh) 基于安卓系统的代码编译方法及装置
CN107808101A (zh) 一种通过加密Python明文源码token的知识产权保护系统
CN1877595A (zh) 一种软件版权保护方法
CN113626773B (zh) 一种基于中间语言的代码保护方法
JP2007515723A5 (ru)
GB2349250A (en) Method for protecting bytecode
US20090235088A1 (en) Program conversion device, execution support device, and method and computer program for the same

Legal Events

Date Code Title Description
PC41 Official registration of the transfer of exclusive right

Effective date: 20150306

MM4A The patent is invalid due to non-payment of fees

Effective date: 20200331