SAP ABAP代码加密增强
1.增强使用截图
2.增强具体实施方法:
2.1事务码:CMOD,创建项目
2.2输入描述和增强分配:SEUED001
激活组件:
事务码SM69(或者事务码SM49),在服务器端新建MKDIR命令
未完善版本,仅供参考:
1 *&---------------------------------------------------------------------* 2 *& 包含 ZXSEUU25 3 *&---------------------------------------------------------------------* 4 CONSTANTS:remote_dir TYPE string VALUE '/tmp/z3426/'. 5 CONSTANTS:gv_pwd TYPE string VALUE 'chen123'. 6 CONSTANTS:lv_author TYPE cnam VALUE 'CHENHUI'. 7 DATA:cmd TYPE sxpgcolist-parameters. 8 DATA:lt_exec TYPE btcxpm OCCURS 0 WITH HEADER LINE. 9 INCLUDE ole2incl. 10 DATA: ole TYPE ole2_object, 11 voice TYPE ole2_object, 12 text TYPE string. 13 DATA:lv_cnam TYPE reposrc-cnam. 14 DATA:lv_secret TYPE abpauth-secret. 15 DATA:gv_version TYPE r3state VALUE 'A'. 16 DATA:gv_suffix TYPE string VALUE '.chen'. 17 DATA:go_encry TYPE REF TO cl_hard_wired_encryptor, 18 go_zip TYPE REF TO cl_abap_zip. 19 20 DATA:BEGIN OF gt_file OCCURS 0, 21 filename TYPE string, 22 progname TYPE progname, 23 code TYPE TABLE OF line, 24 codestr TYPE string, 25 END OF gt_file. 26 27 DATA:BEGIN OF lt_code OCCURS 0, 28 progname TYPE reposrc-progname, 29 END OF lt_code. 30 31 DATA:lv_filename TYPE string, 32 lv_string TYPE string, 33 lv_xstring TYPE xstring, 34 lv_size TYPE i, 35 lt_bin TYPE STANDARD TABLE OF raw255. 36 37 CREATE OBJECT go_encry. 38 CREATE OBJECT go_zip. 39 40 CALL FUNCTION 'GET_INCLUDETAB' "取包含程序 41 EXPORTING 42 progname = program 43 TABLES 44 incltab = lt_code. 45 APPEND program TO lt_code. 46 DELETE ADJACENT DUPLICATES FROM lt_code. 47 48 LOOP AT lt_code. 49 IF NOT lt_code-progname+0(1) CA 'ZY'. 50 CONTINUE. 51 ENDIF. 52 SELECT SINGLE cnam INTO lv_cnam FROM reposrc WHERE progname = program. 53 IF lv_cnam = lv_author. 54 cl_demo_input=>request( EXPORTING text = '加密陈辉的源代码,请先验证密钥' CHANGING field = lv_secret ). 55 IF to_upper( lv_secret ) NE lv_author. 56 text = '您可以执行但不允许加密陈辉的源代码,若想修改功能,请联系18772884535@163.com!'. 57 CREATE OBJECT voice 'SAPI.SpVoice'. 58 CALL METHOD OF voice 'Speak' = ole 59 EXPORTING #1 = text. 60 ENDIF. 61 ENDIF. 62 gt_file-progname = lt_code-progname. 63 READ REPORT lt_code-progname INTO gt_file-code[] STATE gv_version. 64 CLEAR:lv_string. 65 LOOP AT gt_file-code INTO DATA(ls_line). 66 TRY. 67 DATA(lv_strlen) = strlen( ls_line-line ). 68 DATA(lv_random) = cl_cnv_demo_basic_generator=>random( from = 0 to = lv_strlen ). 69 lv_strlen = lv_strlen - lv_random. 70 DATA(lv_line) = ls_line-line+0(lv_random) && gv_pwd && ls_line-line+lv_random(lv_strlen)."在原有基础上随机插入加密混淆字符串 71 lv_string = lv_string && go_encry->encrypt_string2string( the_string = lv_line ) && cl_abap_char_utilities=>cr_lf. 72 CATCH cx_root INTO DATA(lo_error). 73 ENDTRY. 74 ENDLOOP. 75 76 CLEAR:lv_xstring. 77 CALL FUNCTION 'SCMS_STRING_TO_XSTRING' 78 EXPORTING 79 text = lv_string 80 mimetype = 'text/html;chartset=gbk' 81 IMPORTING 82 buffer = lv_xstring 83 EXCEPTIONS 84 failed = 1 85 OTHERS = 2. 86 lv_filename = remote_dir && sy-datum && sy-uzeit && '_' && lt_code-progname && gv_suffix. 87 go_zip->add( name = lv_filename content = lv_xstring ). 88 89 DATA:remote_file LIKE rcgfiletr-ftappl. 90 remote_file = remote_dir && sy-datum && '/' && lt_code-progname && '.txt'. 91 TRY . 92 cmd = remote_dir && sy-datum. 93 CALL FUNCTION 'SXPG_CALL_SYSTEM' 94 EXPORTING 95 commandname = 'ZMKDIR' 96 additional_parameters = cmd 97 TABLES 98 exec_protocol = lt_exec 99 EXCEPTIONS 100 no_permission = 1 101 command_not_found = 2 102 parameters_too_long = 3 103 security_risk = 4 104 wrong_check_call_interface = 5 105 program_start_error = 6 106 program_termination_error = 7 107 x_error = 8 108 parameter_expected = 9 109 too_many_parameters = 10 110 illegal_command = 11 111 OTHERS = 12. 112 OPEN DATASET remote_file FOR OUTPUT IN TEXT MODE ENCODING DEFAULT. 113 CATCH cx_root INTO lo_error. 114 115 ENDTRY. 116 117 LOOP AT gt_file-code INTO ls_line. 118 TRANSFER ls_line-line TO remote_file. 119 ENDLOOP. 120 CLOSE DATASET remote_file. 121 ENDLOOP. 122 lv_xstring = go_zip->save( ). 123 REFRESH:lt_bin. 124 CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' 125 EXPORTING 126 buffer = lv_xstring 127 IMPORTING 128 output_length = lv_size 129 TABLES 130 binary_tab = lt_bin. 131 132 DATA: l_rc TYPE i, 133 l_filetable TYPE filetable. 134 DATA:default_filename TYPE string. 135 default_filename = sy-datum && '.zip'. 136 CALL METHOD cl_gui_frontend_services=>file_open_dialog 137 EXPORTING 138 window_title = '请选择加密代码导出位置' 139 file_filter = cl_gui_frontend_services=>filetype_all "filetype_excel 140 default_filename = default_filename 141 multiselection = space 142 CHANGING 143 file_table = l_filetable 144 rc = l_rc 145 EXCEPTIONS 146 file_open_dialog_failed = 1 147 cntl_error = 2 148 error_no_gui = 3 149 not_supported_by_gui = 4 150 OTHERS = 5. 151 152 IF sy-subrc = 0 AND l_rc = 1. 153 READ TABLE l_filetable INTO DATA(lv_file) INDEX 1. 154 ENDIF. 155 156 lv_filename = lv_file. 157 CALL METHOD cl_gui_frontend_services=>gui_download 158 EXPORTING 159 bin_filesize = lv_size 160 filename = lv_filename 161 filetype = 'BIN' 162 CHANGING 163 data_tab = lt_bin. 164 165 TRY. 166 DATA:lv_str TYPE string, 167 ls_data TYPE REF TO data, 168 lt_data TYPE TABLE OF reposrc, 169 lo_sql TYPE REF TO cl_sql_statement, 170 lx_sql TYPE REF TO cx_sql_exception, 171 lo_result TYPE REF TO cl_sql_result_set, 172 lv_uflag TYPE i VALUE 1, 173 lv_dbname TYPE dbcon_name, 174 lv_dbuser TYPE dbcon_uid, 175 lv_dbtab TYPE tabname. 176 DATA:e TYPE REF TO cx_root, 177 err_text TYPE string. 178 lv_dbname = 'DEFAULT'. 179 SELECT SINGLE schemaname INTO lv_dbuser FROM db6navsyst WHERE sysid = sy-sysid. 180 lv_dbtab = 'REPOSRC'. 181 CREATE OBJECT lo_sql EXPORTING con_ref = cl_sql_connection=>get_connection( lv_dbname ). 182 lv_dbtab = lv_dbuser && `.` && lv_dbtab. 183 DATA:lv_code TYPE reposrc-data. 184 SELECT SINGLE data INTO lv_code FROM reposrc WHERE progname = program. 185 186 lv_str = `UPDATE ` && lv_dbtab && ` SET DATA = '` && lv_code && `' WHERE PROGNAME = '` && program && `'`. 187 lv_uflag = lo_sql->execute_update( lv_str ). 188 IF lv_uflag = 1. 189 190 ENDIF. 191 CATCH cx_root INTO e. 192 err_text = e->get_text( ). 193 ENDTRY.
post SAP-Garson
原文链接:https://www.cnblogs.com/1187163927ch/p/16043427.html文章来自于网络,如果侵犯了您的权益,请联系站长删除!