SAP R/3 форум ABAP консультантов
Russian ABAP Developer's Club

Home - FAQ - Search - Memberlist - Usergroups - Profile - Log in to check your private messages - Register - Log in - English
Blogs - Weblogs News

Исходный код абап программ в базе



 
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP
View previous topic :: View next topic  
Author Message
vga
Мастер
Мастер


Age: 200
Joined: 04 Oct 2007
Posts: 1218
Location: Санкт-Петербург

PostPosted: Thu Sep 10, 2009 3:47 pm    Post subject: Исходный код абап программ в базе Reply with quote

Коллеги, подкинуло исходный и прекомпилированный bytecode abap программ посмотреть прямо в базе. Может кто знает, чем получаемые сырцы упакованы?

Code:
REPORT  z_vga_test.

FIELD-SYMBOLS <fs>.
DATA: block(32768) TYPE x,
      prog    TYPE program,
      program TYPE program.

program = sy-repid.

EXEC SQL.
  SELECT PROG, BLOCK INTO :PROG, :BLOCK FROM D010S
         WHERE PROG = :PROGRAM
ENDEXEC.
ASSIGN block TO <fs> TYPE 'C'.

WRITE: / 'Program:', prog.

WRITE: / 'Source code:',
       / <fs>.

EXEC SQL.
  SELECT PROG, BLOCK INTO :PROG, :BLOCK FROM D010L
         WHERE PROG = :PROGRAM
ENDEXEC.
ASSIGN block TO <fs> TYPE 'C'.

WRITE: / 'Byte code:',
       / <fs>.


Quote:
Program: Z_VGA_TEST
Source code:
џќ#######жNљП4##aќ_y#ГРЕUP!#јхнN:=Л;Xћi,g#*#jбњычic#аа#AєљE 9##чю9#Ч#q#№1}[ЬІY#
Byte code:
џпЗ######вЎЕЦЦu\ч3w#\>#Єѕ#ьЌ%1Ё#БКwEJЄ#KмЧ%Й#їЁНKJ#эЎ\Щ#ь##Ња#н#экЕ#Чq#%nlЇ#i#p
Back to top
View user's profile Send private message Blog Visit poster's website
John Doe
Модератор
Модератор


Age: 45
Joined: 05 Nov 2007
Posts: 725
Location: КраснАдар

PostPosted: Thu Sep 10, 2009 5:26 pm    Post subject: Reply with quote

Валерий, привет. Я так понял, что в ECC 6.0 этих табличек уже нет. У меня код валится...
В SE14 поиск по D010* принес другие таблички.
На SDN советуют использовать SCWB_GET_ABAP_CODE_OF_OBJECT для чтения кода. Там внутри дергают TMS_CI_DECODE_TABLE с параметром REPS_ABAPTEXT и табличкой с данными. Наверное это не то, что нужно - но все таки.

Добавил: не поможет, сейчас проследил до конца, через read report считывают.
Back to top
View user's profile Send private message Blog
vga
Мастер
Мастер


Age: 200
Joined: 04 Oct 2007
Posts: 1218
Location: Санкт-Петербург

PostPosted: Thu Sep 10, 2009 7:47 pm    Post subject: Reply with quote

Андрей, привет!
Меня больше интересовало посмотреть прекомпиленный код, а исходный код приведен для примера. Если удастся правильно конвертировать из этой абрыкадабры в читаемый абап текст, то можно предположить, что и кодирование перкомпиленного кода идет по тому же алгоритму.
Задача не прикладная, а так, для саморазвития.
Back to top
View user's profile Send private message Blog Visit poster's website
mrand
Участник
Участник


Age: 48
Joined: 15 Apr 2008
Posts: 10
Location: москва

PostPosted: Fri Sep 11, 2009 11:50 am    Post subject: Reply with quote

vga wrote:
Если удастся правильно конвертировать из этой абрыкадабры в читаемый абап текст, то можно предположить, что и кодирование перкомпиленного кода идет по тому же алгоритму


Мне это предположение кажется сомнительным, т.к. байткод не равен исходному коду. Я когда-то разбирался в байткодом Бaaна, это тоже большая ERP ровесник сапа.

Внутри байткода там оказалась стековая машина (см обратная польская запись), выражение 2*3+8 компилируется в push 2; push 3; mul; push 8; add;

И кое-где между последовательностями этих команд стоят инструкции line 12, без дебагера они ничего не делают, а под дебагером, говорят дебагеру показать 12ю строку исходника как текущую выполняемую. Таким образом, исходник хранится вне байткода, зато в чистом виде.

Возвращаясь к сапу, думаю где-то исходный код хранится, скорее всего тем же способом что и обычный, возможно под немного другим ключом, но не в байткоде.

А может и внутри байткода. Скомпилированная программа это вещь со сложной структурой, она содержит множество секций – список констант, список внешних функций, про диалоги наверняка что-нибудь, секцию собственно исполняемого байткода, и тут же может быть и секция исходного кода. И все это в одном бинарнике в D010L.
Back to top
View user's profile Send private message Blog
vga
Мастер
Мастер


Age: 200
Joined: 04 Oct 2007
Posts: 1218
Location: Санкт-Петербург

PostPosted: Fri Sep 11, 2009 12:06 pm    Post subject: Reply with quote

mrand wrote:
т.к. байткод не равен исходному коду

Ну я это и не говорил, предположил, что алгоритм кодировки одинаковый. Вообще понятно, почему sap таким образом защитил исходники. Это закрывает от прямого апдейта через Native SQL системные программы.
Back to top
View user's profile Send private message Blog Visit poster's website
Display posts from previous:   
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG.
SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG.
Every effort is made to ensure content integrity. Use information on this site at your own risk.