Hide and protect PL/SQL source code
If you’re working with Oracle PL/SQL and want to protect your code from being easily read or altered, wrapping your procedures is a great way to obfuscate your source code. This process ensures that even if someone gains access to your database scripts, the code will be unreadable. Here’s a straightforward guide to wrapping your PL/SQL procedures.
Step 1: Create Your PL/SQL Procedures
Start by writing your PL/SQL procedures. Here’s an example with two procedures named procedure_one and procedure_two:
CREATE OR REPLACE PROCEDURE procedure_one (
param1 IN VARCHAR2,
param2 IN NUMBER
) AS
BEGIN
DBMS_OUTPUT.PUT_LINE(‘Executing procedure_one’);
— Your logic here
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(‘Error in procedure_one: ‘ || SQLERRM);
RAISE;
END procedure_one;
/
CREATE OR REPLACE PROCEDURE procedure_two (
param1 IN VARCHAR2,
param2 IN NUMBER
) AS
BEGIN
DBMS_OUTPUT.PUT_LINE(‘Executing procedure_two’);
— Your logic here
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(‘Error in procedure_two: ‘ || SQLERRM);
RAISE;
END procedure_two;
/
Save these procedures in a file called procedures.sql.
Step 2: Wrap the PL/SQL Code
Oracle provides a wrap utility that converts your PL/SQL code into an obfuscated format. Here’s how you can use this utility:
wrap iname=procedures.sql oname=procedures.plb
inamespecifies the input file containing your original PL/SQL code.onamespecifies the output file where the obfuscated code will be saved.
Step 3: Deploy the Wrapped Code
The wrapping process will generate a file named procedures.plb containing the obfuscated code. To deploy this file to your Oracle database, you can execute:
@procedures.plb
Example of Wrapped Code
After wrapping, the code becomes obfuscated. Here’s an example of what wrapped PL/SQL might look like:
CREATE OR REPLACE PROCEDURE procedure_one wrapped
a000000
abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcd
Note: you are never rollback the source code once it’s wrapped. So you maintain the source code yourself for future use or modifications.