C-ohjelmointi. protect java code from decompilation protect java class from decompile protect java class file decompile JarProtector, JarStarter, java, jar, protection, protector, obfuscator, obfuscation, class files, resource files, protect, secure, security, decompilation, decompiler, byte-code encryption vermsoft arte ludens arcoselle, arcosel Shop The attacker's Java reverse-related skills are disabled and forced to reverse native binaries, which is far more difficult than reverse bytecode. Protect java code against decompiler. Extract a source code from a protected dll -- 2 . Following a breakdown or disconnection of the car battery, the Fiat DAIICHI MOPAR radio will prompt you for a security code in order to function. My question is how can I distribute my jar file without my code being extracted from it? Heck, you can just disassemble it. is .NET specific. Basically, before distributing your class files on the Internet, run Crema on them. The result is that the code of P is not equal to the code of P', and P.code is more difficult to understand than P'.code but both function the same way. Focus on Java Development. At the minimum, the JVM is going to need to get the code out in order to run it. How do I call one constructor from another in Java? Learn how the Crema obfuscator can help protect your Java code from decompilers such as Mocha If you are writing Java classes and distributing them over the Internet, you should know that. How are they protecting the jar files from those decompilers? Was Galileo expecting to see so many stars? Your job then is to rename 1.crema to something like filename.class before distributing it on the Internet. So to make the job of reverse engineers tough, we uses Java Obfuscators to protect out class files and make them difficult to decompile. Your email address will not be published. JavaWorld. Third (and possibly offering the strongest protection) is to use native ahead of time compilers like GCC or Excelsior JET, for example, that compile your Java code directly to a platform specific native binary. Site design / logo 2023 Stack Exchange Inc; user contributions licensed under CC BY-SA. Find centralized, trusted content and collaborate around the technologies you use most. This section describes several common methods for protecting Java bytecode from decompilation. Among other things, Java byte code was designed for compactness, platform independence, network mobility, and ease of analysis by byte-code interpreters and JIT (just-in-time)/HotSpot dynamic compilers. 2. Java decompilationJava . How does a fan in a turbofan engine suck air in? You can use obfuscation tool like 'proguard'. So how does Crema work? rev2023.3.1.43266. Step 1: Download JAD tool from https://bit.ly/2XuRzT5 Step 2: Extract the zip file and get jad.exe. For instance, do you expect the main program to be written in pure java? against reverse engineering and plagiarism. Efficiency of Java "Double Brace Initialization"? Now click on edit rule (button below -). Protect Java source code & algorithms from hacking, cracking, reverse engineering, decompilation & technology theft. It is a 100% pure Java solution that makes the reverse-engineering almost impossible. Portable Executable (PE) is either a DLL or an EXE. Metadata contains assemble information like Assembly Name, Version, Culture and Public Key. How is "He who Remains" different from "Kang the Conqueror"? As we can see in the above screenshot when we open the EXE with Telerik JustDecompile, we are able to see the original source code, this can lead to piracy and ultimately you can lose your profits. 542), We've added a "Necessary cookies only" option to the cookie consent popup. This article(?) Protect java code against decompiler. Obfuscate your code using some obfuscator in the market. Try not to ship the key as a hardcoded constant in your code: Keep it as a per-user setting. How do I read / convert an InputStream into a String in Java? Use. I have tried some decompilers like JD and Jode with some .jar files, and they couldn't decompile all the .java classes, in many of them I get an error, and many other just a very basic code. Do lobsters form social hierarchies and is the status in hierarchy reflected by serotonin levels? Every application can be cracked with enough effort. Unfortunately, you would be wrong, both in thinking that you were the first to come up with this idea and in thinking that it actually works. I wouldn't bother much, you can probably encrypt them enough to turn script kids away, not more. The more successful commercial obfuscators use a mix of these and other techniques. If you are developing a Java application, it is important to understand that the Java class files can be easily reverse-engineered using Java decompilers. Software copy protection against cracking and reverse engineering. Why do we kill some animals but not others? Hi all, in certain scenarios you can save clear executable only in memory,here you see a sample, here is a git-hub project that reverse ConfuserEx Exe Files, I have an application using compact framework with external resource such as Barcode DLL. To demonstrate this, let's create a simple application first. This sounds like a bad idea: You are letting someone encrypt stuff with a 'hidden' key that you give him. 1. Software companies can often have millions of dollars invested in them and even small software companies invest many hours of (expensive) developer time into their products. WinRAR will extract files from an Android APK. deploy an encrypted license with a public key to decrypt, let the customer create a new license and send it to you for encryption. i.e the compiled java application that contains the class files. But fundamentally this causes a similar set of problems. After downloading, extract the zip into a folder and then run ConfuserEx.exe. A typical abuse, the inline hyperlength method, greatly increases the bytecode length, but does more harm than good. One of the best alternate utility for obfuscating is ConfuserEx - it is a completely free and opensource. A: The problem of preventing Java byte-code decompilation is almost as old the language itself. Executable wrapper for Java, Cross-Platform. Do flight companies have to make it clear what visas you might need before selling you tickets? Required fields are marked *. How do I generate random integers within a specific range in Java? Is email scraping still a thing for spammers. In this article, let us explore how a Java class file is reverse-engineered and how to protect your source code from this. In practice, the goal is just to keep the mostly honest people, honest. When you invest time into writing a commercial app that you need to sell to keep your business alive, you need to have some way to protect that investment. Download obfuscate software that is available online. It's based on the use of asymmetrical keys. (adsbygoogle = window.adsbygoogle || []).push({}); If you are writing Java classes and distributing them over the Internet, you should know that people can reverse-engineer, disassemble, or decompile your classes into Java source code. The Dofuscator community edition has limited features and the professional edition is very expensive. Protecting Java Code via Code Obfuscation by Douglas Low Abstract The Java language is compiled into a platform independent bytecode format. [NEW] DZone's 2023 "DevOps: CI/CD, Application Delivery, and Release Orchestration" Trend Report, , Cypress vs. Puppeteer: A Detailed Comparison, GKE Cluster Optimization: 14 Tactics for a Smoother K8s Deployment, Kubernetes-Native Development With Quarkus and Eclipse JKube, Streaming Data to RDBMS via Kafka JDBC Sink Connector Without Leveraging Schema Registry, Protect Your Java Code From Reverse Engineering, -injar : Specify the location of your jar file. Sample java source code (myapp.AppToolBar) before obfuscation. You have not read the post I linked to. It supports the following operations: Renaming class, method, field and local names to shorter, obfuscated, or unique names or according to a given translation table Removing debugging information Removing dead code (classes, fields, methods) and constant fields Optimizing local variable allocation Website: http://java-source.net/open-source/obfuscators/jode, There are several other similar utilities that you can use as well. The below settings are related to confuserex. Drag and drop the EXE you want to protect on the ConfuserEx or you can manually select Base Directory, Output Directory and add the DDL or EXE. Copyright 1997 IDG Communications, Inc. So, I have to ask, do you really need hardened protection like you are seeking for your application? Its amazing!! When we designed JWCrypt we knew that it would never be impossible to circumvent, so we focused on two key goals: If you have valuables in your home or at your office, there may be no theoretically impenetrable way to protect them, but you are far better off keeping them hidden, protected in a safe, behind locked doors in a secure building than in a cardboard box on the street. Prevent decompilation of password data The simpliest way - you can use tools from System.Security.Cryptography namespace to encrypt your credentials and then use any obfuscator to make decription process little harder. Yes, we can get the source code from dll or exe. Even after decompilation it will be almost impossible to understand the code. GitHub, what about new .net core publish options; dotPaek not able to decompile don't check other simple options, This is a dangerous Virus! The open-source game engine youve been waiting for: Godot (Ep. and ygard for ant, Site design / logo 2023 Stack Exchange Inc; user contributions licensed under CC BY-SA. The Java Antidecompiler Console is the first java console anti-piracy software for protecting headless executable .jar files and resources. Obfuscate your java application. $ cd /home/jsmith $ unzip proguard4.2.zip. So how can you protect your classes from being decompiled? In this Java Q&A installment, I dispel some myths around an idea frequently rehashed in discussion forums. vlinx@vlinx.io. As we can see, the confused DLL or EXE which gets generated by ConfuserEx cannot be decompiled any more. Yes, we can get the source code from DLL or EXE. Now in this case, any average Java person can use JAD to decompile the class file and easily retrieve the password value (defined as constant) as well as salt and in turn can decrypt the data by writing small independent program! Now try to decompile it with a decompiler. What are the consequences of overstaying in the Schengen area by 2 hours? But they are generally more effective at compressing code, than protecting it. 5. How do I apply a consistent wave pattern along a spiral curve in Geo-Nodes. Lock compiled java classes to prevent decompilation. Obfuscation is commonly used in Java environments and for years has been helping companies protect the intellectual property in their Java-based products. A popular application obfuscates function and class names prior to compiling. Now let's run Mocha on the class file and see the Mocha output: The above command generates a file called test.mocha, which contains the Java source code generated by Mocha: As you can see from the example above, Mocha has given us Java source code that is easy to read and understand. How to lock compiled Java classes to prevent decompilation? This is the obvious case since without any protection for your source code you have no way to license your app. Website: http://java-source.net/open-source/obfuscators/javaguard, JODE is a java package containing a decompiler and an optimizer for java. How do I efficiently iterate over each entry in a Java Map? The main claim of the paper is before running all classes must be decrypted and passed to the ClassLoader.defineClass() method. I know this is a very common question, and a good topic is actually here: Extract the zip and then run Select the EXE you want to protect. Job Description: So I have some files that I need a coder to extract the source code . What does your customer base look like? Decompile HelloWorld.class file and view the original source. How do I apply a consistent wave pattern along a spiral curve in Geo-Nodes. Enter your email address. JarProtector is the most secure way to protect your java class files and resources from decompilation. By clicking Accept all cookies, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy. JavaWorld's most popular long-running series, featuring new and classic Java programming tips from your peers in the Java developer community. Essentially the process is as follows: This file, when renamed as a .class file, will be functionally equivalent to the original bytecode. It looks like this article is exactly the same as one you posted 1 1/2 years ago. JObfuscator employs a variety of obfuscation techniques to protect & conceal the true functionality of your Java source code. and the new obfuscated name. Mocha is distributed without charge. Protecting java jar files. Support JavaSE App, Tomcat Web App, Spring Boot App, GlassFish App, Payara App and Java 8, Java 11 Enviro. In general, these methods do not absolutely prevent the program from being decompiled, but only make it more difficult to decompile, because these methods have their own usage environment and weaknesses. Mangle package, class, method and field names Control mangling by access control (e.g., public, protected, private, friendly) Control mangling options on a class by class basis Strip debugging information Insert string tags to secretly mark class files as yours Output map of symbols to mangled symbols Easy to use graphical user interface, see screenshot. The right way - to hide your database behind web service with public API. While Java has many strengths, ease of code decompilation is a weakness for commercial apps. It combines an obfuscation technique, java cryptography, and the original BIS Guard & Co. technology. The bytecode is. The extreme ease with which Java .class files can be reconstructed into Java sources that closely resemble the originals has a lot to do with Java byte-code design goals and trade-offs. Decompilation is taking the compiled code of a program, often minified and obfuscated, and trying to get the original source code back as it was written, or at least get it in a form a person could read. Unicode class names are tricky to implement correctly, so most decompilers don't. Other than quotes and umlaut, does " mean anything special? How exactly do you intend to detect a patched JVM? Your apps will be compiled into intermediary bytecode (.class files) that will be executed by the Java Runtime Environment (JRE). 1 Answer Sorted by: 2 One very simple approach is to add lambdas to your class. +1 for "Locks are for animals". What are examples of software that may be seriously affected by a time jump? |. when i open class file using "jdgui" software then actual code appears as it is. JObfuscator is a source code obfuscator for the Java programming language. Thanks in advance Re: how to protect jar file from decompilation Assume it's interesting and varied, and probably something to do with programming. Crema will scramble the symbolic information contained in them, and will place each new class in the file 1.crema. Copyright 2023 IDG Communications, Inc. Not the answer you're looking for? Answer 1. To learn more, see our tips on writing great answers. Suspicious referee report, are "suggested citations" from a paper mill? The original source code is not recovered, but instead an equivalent of the original is produced as output, which if compiled should give the same class file that was reverse engineered. ProGuard is one open source obfuscation platform, and several newer paid platforms are based on ProGuard source. EDIT: How can one secure the logic in a Java class file? Long descriptive names for classes, methods and fields can be replaced by meaningless symbols making it much more difficult to reverse engineer. Many developers are still not aware that Portable Executable (PE) files can be decompiled to readable source code. Peruttu. Try-with-resources is another good thing to try, since it is complex and doesn't have any equivalent in vanilla Java code. Once you have done setting up the directories and adding DLL or EXE, go to the Settings tab in ConfuserEx. The process of obfuscation will convert bytecode into a logical equivalent version that is extremely difficult for decompilers to pick apart. When using ClickOnce to install the application to clients, how is protecting the source code achievable . Can patents be featured/explained in a youtube video i.e. Not the answer you're looking for? Changing actual class and package names can break several other Java APIs (JNDI (Java Naming and Directory Interface), URL providers, etc.). How to lock compiled Java classes to prevent decompilation? Connect and share knowledge within a single location that is structured and easy to search. The functionality remains unchanged, everything works the same, but the source code and the final compiled bytecode are protected from reverse engineering analysis, even after the decompilation.. JObfuscator renames all variables and methods, obfuscates the code flow into a non-linear version, and . One method of prevention is to make compiled code more difficult to decompile. On clicking edit rule, a new window will appear as shown below. How to delete all UUID from fstab but not the UUID of boot filesystem. -printmapping: ProGurad outputs all the mapping information in this file for your reference. Protecting class files from decompilation. It basically has an ability to read Intermediate Language. Thank you. Much of the information contained in the original source code remains in the bytecode, thus decompilation is easy. As we can see, IL DASM disassembles the EXE and lots of useful information can be retrieved, though it does not provide the original source code completely, a lot can be interpreted. Let us review how to obfuscate and protect your source code from reverse engineering using ProGuard a free GPL licensed software. The process of protecting the EXE and DLL from getting decompiled into the exact code is called Obfuscation. :thumbs-up: Perhaps unrelated, but I'd love to see a discussion of obfuscators such as this, in the age of open source vs code that "inherently can't be trusted" (. jhsdb can pull class files straight out of memory, The open-source game engine youve been waiting for: Godot (Ep. There are a lot of paid and free software available to Obfuscate the .NET assemblies, Dotfucator from PreEmptive Solutions is one of the popular ones and their community edition is free and included with Visual Studio. Creating a commercial app is a large investment. This will contain all the mangled, obscure naming convention of the methods and variables in the class file if someone tries to reverse engineer. For the first open visual studio command prompt. II. However, from an attack perspective, the first approach would be to just modify the code that performs the license check and remove it. Regardless of the language your app is translated into - compiled Java, natively compiled C or anything else - if your licensing code is trivially decompiled then your licensing is no longer effective. Protecting class files from decompilation. Protect java code against decompiler. Nothing can oblige the protected java app not only to launch these classes but even decrypt and pass them to ClassLoader. Java class file contains only byte code. Crema scrambles the symbolic information in your .class files so that they will become less vulnerable to decompilation. Open Source. [duplicate]. Protect java jar files from theft. The act of decompiling itself can be illegal if your license is written correctly. How to lock compiled Java classes to prevent decompilation? Obfuscation is the process of transforming Java source code into a protected version of itself.. JDK). There are things you can do to make this attack vector harder, but if you give the attacker control of the hardware, your destined to fail with a suitably motivated and skilled attacker. Do German ministers decide themselves how to vote in EU decisions or do they have to follow a government line? Protect jar files from . By clicking Accept all cookies, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy. Isn't that another point where the original source could leak ? We are looking for testers and impressions about the service. KlassMaster views, edits, obfuscates, and unobfuscates. Just Extract the .apk file using WinRAR. Am I being scammed after paying almost $10,000 to a tree company not being able to withdraw my profit without paying a fee. Your email address will not be published. How to protect compiled Java classes? How to decompile .class and jar file using Storyyeller/Krakatau, Decompiling obfuscated Android dex/jar files into Java source code. These technical details are a quite different story. 1. What really important is, as Stu answered, figuring out how strong protection you need. JObfuscator is a source code obfuscator for the Java language. is there a chinese version of ex. The compiled Java bytecode can be easily reversed engineered back into source code by a freely available decompilers. How can I create an executable/runnable JAR with dependencies using Maven? when I use the same decompilers with my jar all the classes are decompiled with full detail. Site design / logo 2023 Stack Exchange Inc; user contributions licensed under CC BY-SA. Can't start Eclipse - Java was started but returned exit code=13. When it is properly applied, obfuscation can increase the protection against decompilation by many orders of magnitude, while leaving the application intact. Is lock-free synchronization always superior to synchronization using locks? It will generate a .class file in the . I'm not convinced that encrypting jar files helps. It is also possible to integrate it with your IDE (for example NetBeans). You can find the protected DLL or EXE in the output directory selected. Well suited for protecting desktop applications, code protection, licensing, digital content protection, and many more. Then the JVM executes my original byte code and yet there is nothing to decompile or reverse engineer, right?". Now in this case, any average Java person can use JAD to decompile the class file and easily retrieve the password value (defined as constant) as well as salt and in turn can decrypt the data by writing small independent program! Do we kill some animals but not others try-with-resources is another good thing to try, it! Will place each new class in the market edition protect java code from decompilation very expensive compiled code more difficult to decompile several. Proguard & # x27 ; He who Remains '' different from `` Kang the ''! Basically has an ability to read Intermediate language App not only to launch these classes but even decrypt pass! Waiting for: Godot ( Ep ( myapp.AppToolBar ) before obfuscation original source could leak filename.class! Many orders of magnitude, while leaving the application to clients, how is `` He Remains... You have no way to license your App the classes are decompiled with full detail edition has features. Java byte-code decompilation is easy you protect your source code Remains in the Java developer community you probably! Jode is a 100 % pure Java solution that makes the reverse-engineering impossible. Confused DLL or EXE I use the same as one you posted 1 1/2 years ago Payara... Difficult to decompile.class and jar file without my code being extracted from it youve... Answer you 're looking for testers and impressions about the service by: 2 one very simple is... Software for protecting Java bytecode from decompilation to integrate it with your IDE for... It is complex and does n't have any equivalent in vanilla Java code the directories and adding or. Bad idea: you are seeking for your reference application that contains the class files on the of! Jdk ) is just to Keep the mostly honest people, honest then is to lambdas... Yet there is nothing to decompile or protect java code from decompilation engineer to turn script kids,. Files ) that will be almost impossible to understand the code? `` and! Collaborate around the technologies you use most suck air in applications, code protection, will! Zip file and get jad.exe aware that portable Executable ( PE ) files can be illegal if license! Java environments and for years has been helping companies protect the intellectual property in Java-based... Free and opensource engine suck air in NetBeans ) and jar file without my code extracted! Your classes from being decompiled installment, I have some files that need... Any equivalent in vanilla Java code via code obfuscation by Douglas Low Abstract Java. Is exactly the same decompilers with my jar all the mapping information your., honest.jar files and resources within a single location that is extremely difficult decompilers... Setting up the directories and adding DLL or EXE in the Java community! Of preventing Java byte-code decompilation is easy tips on writing great answers I need a coder to the... And how to delete all UUID from fstab but not others added a `` Necessary cookies only '' to. Different from `` Kang the Conqueror '' classes to prevent decompilation into Java source code: extract zip! File and get jad.exe by serotonin levels zip file and get jad.exe not decompiled... More difficult to decompile.class and jar file without my code being extracted from it obfuscation! And is the obvious case since without any protection for your application decompilers with my jar file Storyyeller/Krakatau. Install the application intact almost as old the language itself pull class files on the use of keys... Is complex and does n't have any equivalent in vanilla Java code Low Abstract the Java Environment! Alternate utility for obfuscating is ConfuserEx - it is a 100 % pure Java scrambles the symbolic information this... File and get jad.exe executes my original byte code and yet there is nothing to decompile '' option to ClassLoader.defineClass! Contains assemble information like Assembly Name, version, Culture and Public key like & # x27 ; &!, Inc. not the UUID of Boot filesystem the technologies you use most still. Another good thing to try, since it is a Java class file / convert an InputStream a. Conqueror '' of protecting the jar files from those decompilers ; Co. technology: it... Java Map all UUID from fstab but not others call one constructor from another Java. 2023 IDG Communications, Inc. not the Answer you 're looking for testers and about... Peers in the original source could leak written correctly simple approach is to add lambdas to your.! That makes the reverse-engineering almost impossible to understand the code from those decompilers 's a. Structured and easy to search basically, before distributing your class files and resources from decompilation protected --! The directories and adding DLL or EXE in the bytecode length, but does more harm good. Be almost impossible, honest it with your IDE ( for example NetBeans ) a consistent wave along! Is lock-free synchronization always superior to synchronization using locks within a specific in. Suited for protecting Java bytecode can be decompiled to readable source code into a platform independent bytecode.! Practice, the goal is just to Keep the mostly honest people, honest a folder and then ConfuserEx.exe... Will be executed by the Java Antidecompiler Console is the status in reflected! For classes, methods and fields can be easily reversed engineered back into source code myapp.AppToolBar... Classes but even decrypt and pass them to ClassLoader as we can get the code! Other techniques reverse-engineered and how to protect & amp ; conceal the true functionality of your Java code. Desktop applications, code protection, licensing, digital content protection, licensing, digital content protection, several... Many strengths, ease of code decompilation is a weakness for commercial.... Combines an obfuscation technique, Java 11 Enviro JDK ) post I linked to application intact can see the... Game engine youve been waiting for: Godot ( Ep.class files so that they will become less vulnerable decompilation! Per-User setting let 's create a simple application first their Java-based products entry in turbofan... File using & quot ; jdgui & quot ; jdgui & quot ; software then actual code appears it! Yet there is nothing to decompile myapp.AppToolBar ) before obfuscation one secure the logic a! Java has many strengths, ease of code decompilation is easy then actual code appears as it is possible. ( button below - ) is `` He who Remains '' different from `` Kang Conqueror. Them, and several newer paid platforms are based on proguard source a bad idea: are... Classes must be decrypted and passed to the cookie consent popup is almost as old the itself! To a tree company not being able to withdraw my profit without paying a fee a! Decide themselves how to vote in EU decisions or do they have to follow a government line we. The status in hierarchy reflected by serotonin levels impossible to understand the code out in to! Or an EXE by Douglas Low Abstract the Java language the compiled Java that. My original byte code and yet there is nothing to decompile or reverse engineer in. See our tips on writing great answers read the post I linked to it be! Communications, Inc. not the Answer you 're looking for testers and impressions about the service application to clients how. The Java language is compiled into intermediary bytecode (.class files so that they will become less to... Seriously affected by a time jump, obfuscation can increase the protection against decompilation by many orders of,! The key as a hardcoded constant in your code using some obfuscator in output... Gets generated by ConfuserEx can not be decompiled to readable source code Remains the... I being scammed after paying almost $ 10,000 to a tree company not being able to withdraw my without. Their Java-based products a fee to try, since it is properly applied obfuscation... When I open class file EU decisions or do they have to make compiled code more to! And an optimizer for Java 2 hours the Dofuscator community edition has limited features and the source. Share knowledge within a single location that is structured and easy to search they will become less vulnerable decompilation... 11 Enviro 're looking for testers and impressions about the service writing great answers flight have... Approach protect java code from decompilation to make compiled code more difficult to decompile pass them to ClassLoader the... Looking for testers and impressions about the service App, Payara App and Java 8 Java! Suggested citations '' from a protected DLL -- 2 and share knowledge within specific... Use the same decompilers with my jar file using Storyyeller/Krakatau, decompiling obfuscated Android files... Being scammed after paying almost $ 10,000 to a tree company not being able to withdraw my without! Your Java class files on the Internet you have done setting up the directories and adding DLL EXE! Back into source code decompilation it will be almost impossible to understand code! The symbolic information in your code using some obfuscator in the bytecode length, but does more harm good... Decompile or reverse engineer using proguard a free GPL licensed software 542 ), can... The zip into a platform independent bytecode format 2023 Stack Exchange Inc ; contributions. Exe, go to the Settings tab in ConfuserEx this Java Q & a installment, I dispel myths... Being able to withdraw my profit without paying a fee not be decompiled to readable source code Remains the!, honest an EXE obfuscation can increase the protection against decompilation by many orders of magnitude, while the. How strong protection you need all the mapping information in your code using some obfuscator in file... For years has been helping companies protect the intellectual property in their Java-based products the alternate! Does a fan in a Java package containing a decompiler and an optimizer for Java the! It combines an obfuscation technique, Java cryptography, and the original source code you have not read post...
Tulsa Police Department Cold Cases, Articles P