Здравствуйте, C0s, Вы писали:
C0s>кто-нить может подсказать где искать настоящий байт-код или как подменить вышеуказанный хедер?
Недавно делал подобную штуку с 10.2.0. Но я, видимо, шёл по сложному пути.
1) В схеме DEV, где нужный мне класс находился, сделал так:
CREATE PACKAGE PKG_SERVERDUMP AS
FUNCTION dumpClassToFile(Param1 VARCHAR2, Param2 VARCHAR2, Param3 VARCHAR2)
return VARCHAR2
AS
LANGUAGE java
NAME 'oracle.aurora.server.tools.dumpclass.ServerDump.dumpClassToFile(java.lang.String, java.lang.String, java.lang.String) return java.lang.String';
end;
2) Поскольку требовался вывод в файл на джаве, в схеме SYS дал права на запись во все файлы схеме DEV:
DECLARE
GRANTEE VARCHAR2(32767);
PERMISSION_TYPE VARCHAR2(32767);
PERMISSION_NAME VARCHAR2(32767);
PERMISSION_ACTION VARCHAR2(32767);
KEY NUMBER;
BEGIN
GRANTEE := 'DEV';
PERMISSION_TYPE := 'SYS:java.io.FilePermission';
PERMISSION_NAME := '<<ALL FILES>>';
PERMISSION_ACTION := 'write';
KEY := NULL;
SYS.DBMS_JAVA.GRANT_PERMISSION ( GRANTEE, PERMISSION_TYPE, PERMISSION_NAME, PERMISSION_ACTION, KEY );
DBMS_OUTPUT.PUT_LINE('RET=' || KEY);
COMMIT;
END;
3) Задампил класс в файл (WinXP, локальный оракл):
DECLARE
CLASSNAME VARCHAR2(32767);
USER VARCHAR2(32767);
FILENAME VARCHAR2(32767);
RETVAL VARCHAR2(32767);
BEGIN
CLASSNAME := 'appbase/tools/oracle/StringUtils';
USER := 'DEV';
FILENAME := 'c:\StringUtils.class';
RETVAL := PKG_SERVERDUMP.DUMPCLASSTOFILE ( CLASSNAME, USER, FILENAME );
DBMS_OUTPUT.PUT_LINE(RETVAL);
END;
В результате у меня получился файлик c:\StringUtils.class, который нормально JAD-ом декомпилировался.