美文网首页
SAP ABAP source hide and unhide

SAP ABAP source hide and unhide

作者: SmalltalkVoice | 来源:发表于2017-06-02 10:25 被阅读252次

    1.可以在SE38或者用函数“ RPY_PROGRAM_READ”查看代码
    所有的代码都是存放在表REPOSRC中并以压缩模式存放
    不能查看源代码。

    2.代码加密程序如下,不过要谨慎使用,一旦代码加密,在SAP中将不能查看源代码
    参考链接 https://archive.sap.com/discussions/thread/740272

    REPORT z_hide_abap
      NO STANDARD PAGE HEADING.
     
    DATA: gt_code(72)  TYPE c OCCURS 0,
          gv_code      LIKE LINE OF gt_code,
          gt_code2(72) TYPE c OCCURS 0.
     
    PARAMETERS: program LIKE sy-repid.
     
    START-OF-SELECTION.
     
      READ REPORT program INTO gt_code.
     
      IF sy-subrc NE 0.
        MESSAGE e398(00) WITH 'Report' program 'not found.'.
    *   ATTENTION:
    *   READ REPORT on a hidden source code return SY-SUBRC=8 !!!
      ENDIF. "IF sy-subrc NE 0
     
      READ TABLE gt_code INDEX 1 INTO gv_code.
     
    * append *special* 1st line to hide cource code
      APPEND '*@#@@[SAP]' TO gt_code2.
      LOOP AT gt_code INTO gv_code.
        APPEND gv_code TO gt_code2.
      ENDLOOP.
     
      INSERT REPORT program FROM gt_code2.
    
    

    3.代码还原
    参考链接 https://www.daniel-berlin.de/devel/sap-dev/decompress-abap-source-code/

    下载代码https://github.com/daberlin/sap-reposrc-decompressor
    用vs2015编译源代码生成命令行程序,例如decompress.exe
    使用下面代码下载加密代码,如ztme11

    *&---------------------------------------------------------------------*
    *& Report ZS_REPOSRC_DOWNLOAD
    *&---------------------------------------------------------------------*
    *& Purpose: Download compressed source code from table REPOSRC
    *& Author : Daniel Berlin
    *& Version: 1.0.1
    *& License: CC BY 3.0 (http://creativecommons.org/licenses/by/3.0/)
    *&---------------------------------------------------------------------*
    
    REPORT zs_reposrc_download.
    
    DATA: v_fnam TYPE rlgrap-filename,  " Local file name
         v_file TYPE string,           " Same, but as a string
         v_xstr TYPE xstring,          " Source (compressed)
         v_xlen TYPE i,                " Length of source
         t_xtab TYPE TABLE OF x255.    " Source plugged into a table
    
    PARAMETERS: report TYPE progname DEFAULT sy-repid           "#EC *
                      MATCHCODE OBJECT progname OBLIGATORY.
    
    START-OF-SELECTION.
    
     " -- Select local file name
     WHILE v_fnam IS INITIAL.
       v_fnam = report.
    
       CALL FUNCTION 'NAVIGATION_FILENAME_HELP'
         EXPORTING
           default_path      = v_fnam
           mode              = 'S'
         IMPORTING
           selected_filename = v_fnam.
     ENDWHILE.
    
     v_file = v_fnam.
    
     " -- Fetch compressed source code
     SELECT SINGLE data INTO v_xstr FROM reposrc
             WHERE progname = report AND r3state = 'A'.
    
     v_xlen = XSTRLEN( v_xstr ).
    
     " -- Plug source into a table
     CALL METHOD cl_swf_utl_convert_xstring=>xstring_to_table
       EXPORTING
         i_stream = v_xstr
       IMPORTING
         e_table  = t_xtab
       EXCEPTIONS
         OTHERS   = 1.
    
     " -- Download to local file
     CALL FUNCTION 'GUI_DOWNLOAD'
       EXPORTING
         filetype     = 'BIN'
         filename     = v_file
         bin_filesize = v_xlen
       TABLES
         data_tab     = t_xtab
       EXCEPTIONS
         OTHERS       = 0.
    
    

    假如下载的程序为ztme11,将ztme11移到decompress.exe所在的目录。
    在cmd中切换到decompress.exe所在的目录,运行如下命令:

      decompress.exe ztme11 ztme11.abap -u
    

    用文本编辑器打开当前目录中的ztme11.abap,就可以查看加密之前的代码了

    相关文章

      网友评论

          本文标题:SAP ABAP source hide and unhide

          本文链接:https://www.haomeiwen.com/subject/bbnyfxtx.html