JavacDoor, සම්පාදනය කරන වේලාවේදී ක්‍රියාත්මක වන Maven අනිෂ්ට මෘදුකාංග

JavacDoor: ස්ථාපනය අතරතුර නොව, සම්පාදනය අතරතුර ක්‍රියාත්මක වූ මාවන් කෞතුක වස්තුවකි

TL; ඩී

ප්‍රකාශයට පත් කරන ලද මේවන් මධ්‍යම කෞතුක වස්තුවක් io.github.davidtimur:c2-lab නිකුතු නවයක් නැව්ගත කරන ලද අතර, ඉන් අටක් මඟින් භාජනය එහි විවරණ-සකසන මාර්ගයේ තැබූ ඕනෑම පහළට යන ව්‍යාපෘතියක් සම්පාදනය කිරීමේදී දුරස්ථ ප්‍රවේශ ගෙවීමක් ක්‍රියාත්මක කරන ලදී. කිසිදු යෙදුම් කේතයක් එය ආයාත කිරීමට සිදු නොවීය. කිසිදු මූලාශ්‍ර රේඛාවක් එය යොමු කිරීමට සිදු නොවීය. ස්ථාපන ස්ක්‍රිප්ට් එකක්, පශ්චාත් ස්ථාපනයට සමාන එකක් සහ මෙවලම් පරීක්ෂා කිරීම සඳහා කිසිදු ආකාරයක ජීවන චක්‍ර කොක්කක් නොතිබුණි.

ක්‍රියාත්මක කිරීමේ දෛශිකය යනු jar එක තුළ ඇති තනි බයිට් 46 ගොනුවකි: ක්‍රියාත්මක කිරීමේ පන්තියක් නම් කරන ජාවා සේවා සපයන්නෙකුගේ ලියාපදිංචියකි. javax.annotation.processing.Processor. ජාවා සම්පාදකය එවැනි ලියාපදිංචි කිරීම් ස්වයංක්‍රීයව සොයා ගනී. සොයාගත් පසු, javac සම්පාදනය කිරීමේ සාමාන්‍ය කොටසක් ලෙස පන්තිය ක්ෂණිකව ක්‍රියාත්මක කර ක්‍රියාත්මක කරයි. ඒ කියන්නේ ගෙවීම් බරෙහි ධාවන කාල පරිසරය ගොඩනැගීමේ යන්ත්‍රයයි, මේ මොහොතේ ගොඩනැගීමේ යන්ත්‍රය එය කිරීමට ඇති එකම දෙය කරමින් සිටී.

නව නිකුතු හරහා විධාන-සහ-පාලන නාලිකාව තුන් වරක් නැවත ගොඩනඟන ලදී: ක්‍රියාකරු-සපයන ලද ආපසු ඇමතුම් URL එකක්, පසුව ngrok TCP උමගක් හරහා ප්‍රතිලෝම කවචයක්, පසුව මාර්ග දෙවරක් මාරු වූ HTTP ඡන්ද නාලිකාවක්. අවසාන නිකුතුව JVM පෙරනිමිය ලෙස no-op TLS විශ්වාස කළමනාකරුවෙකු ස්ථාපනය කරන ලදී, සම්පාදනය කරන කාලය සඳහා ඕනෑම සහතිකයක් පිළිගැනීම.

කෞතුක වස්තුව එහිම POM එකෙහි සහ MIT බලපත්‍රයක "C2 Lab Payload" යන වචන අඩංගු විය. අපි එය නිරීක්ෂණය කළ මුළු කාලය පුරාම එය Maven Central හි සජීවීව පැවති අතර එතැන් සිට එහි සම්පූර්ණ එක සමඟ ඉවත් කර ඇත io.github.davidtimur සමූහය.

ව්‍යුහ විද්‍යාව: ක්‍රියාත්මක කිරීමේ එන්ජිම ලෙස සම්පාදකය

ජාවා හි විවරණ සැකසුම් රාමුව පවතින බැවින් පුස්තකාලවලට සම්පාදනය කරන අවස්ථාවේදී කේත ජනනය කළ හැකිය - ලොම්බොක්, ඩැගර් සහ ORM සහ අනුක්‍රමිකකරණ මෙවලම්වල දිගු ලැයිස්තුවක් පිටුපස ඇති යාන්ත්‍රණය. සකසනයක් භාජනය තුළ සරල පෙළ ගොනුවක් සමඟ තමන්ව නිවේදනය කරයි:

META-INF/services/javax.annotation.processing.Processor

බලපෑමට ලක් වූ සෑම නිකුතුවකම, වාචිකව සහ සම්පූර්ණයෙන්, එම ගොනුවේ අන්තර්ගතය:

io.github.davidtimur.c2lab.C2Processor

ගොනුව 1.0.1 සිට 1.0.8, md5 දක්වා නිකුතු හරහා බයිට්-සමාන වේ. 7d2a08a5c8869a47eea9fa62487dfbe4. 1.0.0 නිකුතුවේ එය අඩංගු නොවේ.

කවදා ද ජාවැක් ක්‍රියාත්මක වන විට, එය මෙම සේවා ඇතුළත් කිරීම් සඳහා විවරණ-සකසන මාර්ගය පරිලෝකනය කර එය සොයා ගන්නා දේ පූරණය කරයි. සම්පාදනය කරන ව්‍යාපෘතියේ කිසිවක් සකසනය සඳහන් කිරීමට, කිසිවක් විවරණය කිරීමට හෝ කිසිවක් වින්‍යාස කිරීමට අවශ්‍ය නොවේ. මාර්ගයෙහි සිටීම ප්‍රමාණවත් වේ. බොහෝ මෙවලම් ගොඩනගා ඇති සැපයුම් දාම රටා වලින් JavacDoor වෙන් කරන ගුණාංගය මෙයයි:

රටාවTriggerලෙස දෘශ්‍යමාන වේ
npm ස්ථාපන කොක්කnpm installscripts.postinstall මැනිෆෙස්ටයේ
පයිතන් ආයාත-කාල ගෙවීමමොඩියුලයේ පළමු ආයාත කිරීමමූලාශ්‍රයේ මොඩියුල මට්ටමේ ප්‍රකාශනය
ජාවැක්ඩෝර්javac ඕනෑම පහළ ව්‍යාපෘතියකසේවා-ලියාපදිංචි ගොනු නාමයක්

ස්ථාපන කොක්කක් යනු මැනිෆෙස්ට් එකක ප්‍රකාශනයක් වන අතර, ඕනෑම අයෙකු මුලින්ම කියවන්නේ මැනිෆෙස්ට් එකකි. ආයාත-කාල ගෙවීමක් අවම වශයෙන් කියවිය හැකි මූලාශ්‍රයක පිහිටා ඇත. සේවා ලියාපදිංචියක් දෙකම නොවේ: එය ගොනු නාමයක් සහ පන්තියක් නම් කරන එක් පේළියක් වන අතර, හැසිරීම නාමාවලියක් දුරින් සම්පාදනය කරන ලද බයිට්කේතයේ ජීවත් වේ.

ගෙවීම් පන්තියම ෂෙල් වෙඩි තැබීමෙන් ධාරක ඔත්තු බැලීම සිදු කරයි. සම්පාදනය කරන ලද පන්තිවල නියත තටාකවල අඩංගු වන්නේ /බින්/ෂෝ, මම කවුද, මා හා එක්වන්න, pwd යුනික්ස් මාර්ගයේ සහ කාර්ය සාධක ලැයිස්තුව වින්ඩෝස් මාර්ගයේ, සමඟ යළි-යොමුවීම් දෝෂ ප්‍රවාහය ළමා ක්‍රියාවලියේ දෝෂ ප්‍රතිදානය ග්‍රහණය කරගත් ප්‍රවාහයට ඒකාබද්ධ කිරීමට. JSON සැකිලි දෙකක් ධාරකයෙන් ප්‍රතිඵල රැගෙන යයි — ලියාපදිංචි කිරීමේ බීකන් එකක්:

{"host":"%s","os":"%s","user":"%s","dir":"%s"}

ජනාකීර්ණ ධාරක නාමයයි විධානය සහ os.name, පරිශීලක නාමය, සහ පරිශීලක.dir පද්ධති ගුණාංග සහ ප්‍රතිඵල ආපසු කැඳවීමක්:

{"version":"%s","host":"%s","time":"%s","output":"%s"}

සම්පාදකයාගේම ප්‍රතිදානයේ ඉතිරිව ඇති ප්‍රගති සලකුණු අසාමාන්‍ය ලෙස අවංක ය: [C2] සම්පාදන-කාල ක්‍රියාත්මක කිරීම සම්පූර්ණයි, [C2] ආපසු ඇමතුමක් යවන ලදී → HTTP , [C2] කවචය සම්බන්ධ කර ඇත .

නිකුතු නවයක්, C2 පරම්පරා තුනක්

මෙම නිකුතු එක් ගෙවීමක පිටපත් නවයක් නොවේ. ඒවා පුනරාවර්තන ලොගයක් වන අතර, ඒවා අනුපිළිවෙලින් කියවීමෙන් බෙදාහැරීමේ දෛශිකය ස්ථාවරව තිබියදී නාලිකාව නැවත ගොඩනඟා ඇති බව පෙන්වයි.

නිකුතුසම්පාදනය කිරීමේදී ස්වයංක්‍රීයව ක්‍රියාත්මක වේනාලිකාව
1.0.0නැත (සේවා ගොනුවක් නැත)ක්‍රියාකරු විසින් සපයන ලද ආපසු ඇමතුම් URL එක පමණි
1.0.1ඔව් (දෛශිකය හඳුන්වා දී ඇත)ක්‍රියාකරු විසින් සපයන ලද ආපසු ඇමතුම් URL එක
1.0.2ඔව්ප්‍රතිලෝම කවචය, ngrok TCP උමග
1.0.3ඔව්HTTP නාලිකාව, /register /cmd /out
1.0.4ඔව්HTTP නාලිකාව, /register /cmd /out
1.0.5ඔව්HTTP නාලිකාව, /ලියාපදිංචි කරන්න /පොල් කරන්න /අවුට් කරන්න
1.0.6ඔව්HTTP නාලිකාව, /ලියාපදිංචි කරන්න /පොල් කරන්න /අවුට් කරන්න
1.0.7ඔව්HTTP නාලිකාව, /ලියාපදිංචි /cmd
1.0.8ඔව්HTTP නාලිකාව + TLS වලංගුකරණය අබල කර ඇත

ඒ වගුවේ ඇති විස්තර තුනක් ඇඳීම වටී, මන්ද ඒ සෑම එකක්ම කෞතුක වස්තු කට්ටලය කියවිය යුතු ආකාරය වෙනස් කරයි.

දෛශිකය 1.0.2 නොව 1.0.1 ට පැමිණේ. 1.0.0 නිකුතුව එකම ඔත්තු බැලීමේ සහ ආපසු ඇමතුම් තර්කනය ගෙන යන නමුත් සේවා ගොනුවක් සහ විවරණ-සැකසුම් ආයාත නොමැත; එය ක්‍රියාත්මක වන්නේ යමක් එයට කතා කළහොත් පමණි. 1.0.1 සිට සේවා ගොනුව පවතින අතර සම්පාදනය කරන ලද පන්ති ආයාත කරයි. javax.annotation.processing.SupportedSourceVersion. ටිකට්පත් නිකුත් කරන ලද නිකුතු දෙක සංසන්දනය කරන ඕනෑම තක්සේරුවක් - 1.0.0 සහ 1.0.2 - යමක් වෙනස් වී ඇති බව නිවැරදිව නිගමනය කරයි, නමුත් කොහේද යන්න වැරදි ලෙස හඳුනා ගනී.

ප්‍රතිලෝම කවචය හරියටම එක් නිකුතුවක පවතී. 1.0.2 නිකුතුවේ අඩංගු වන්නේ 0.tcp.ngrok[.]io, ලොග් රේඛාව [C2] කවචය 0.tcp.ngrok[.]io:19823 ට සම්බන්ධ කර ඇත., අන්තර්ක්‍රියාකාරී බැනරයක් c2-කවචය, සහ රාමු පර්යන්තයක් __END__. 1.0.3 සිට ඉදිරියට නිකුත් කරන ලද නිකුතුවල ඒ කිසිවක් අඩංගු නොවන අතර ඒ වෙනුවට HTTPS සත්කාරකයකට ළඟා වේ. ටිකට්පත් නිකුත් කරන ලද නිකුතු පමණක් නම් කරන ඉවත් කිරීමේ ඉල්ලීමක්, පසුකාලීන නිකුතු හයක සඳහන් නොකළ, සජීවී HTTP නාලිකාවෙන් ඉවත් වන අතරතුර මිය ගිය TCP අන්ත ලක්ෂ්‍යයක් උපුටා දක්වනු ඇත.

අවසාන නිකුතුව ප්‍රවාහන සත්‍යාපනය ඉවත් කරයි. 1.0.8 නිකුතුව ක්‍රියාත්මක කිරීමේ පන්තියක් එක් කරයි javax.net.ssl.X509 විශ්වාස කළමනාකරු සහතික-පරීක්ෂා කිරීමේ ක්‍රම කිසිවක් නොකරන, සැමවිටම සත්‍ය සත්කාරක නාම සත්‍යාපකයක් ලියාපදිංචි කර ඇත setDefaultHostnameVerifier, සහ සියල්ල විශ්වාස කරන්න JVM හි පෙරනිමි ලෙස දෙකම ස්ථාපනය කරන routine. බලපෑම නම්, එම සම්පාදනයේ ඉතිරි කොටස සඳහා, JVM ඕනෑම සත්කාරක සමාගමකින් ඕනෑම සහතිකයක් පිළිගනී - ගෙවීමේ බරෙහිම ගමනාගමනය සඳහා පමණක් නොව, පසුව TLS හරහා ගොඩනැගීම කරන වෙනත් ඕනෑම දෙයක් සඳහා.

HTTP නාලිකාව, එය භාවිතා කරන සියලුම නිකුතු හය තුළ, තනි සත්කාරකයෙකු විසින් මෙහෙයවනු ලැබේ: මේස-උමතු-පිස්සු.ngrok-නිදහස්[.]dev. සෑම ඉල්ලීමකම ශීර්ෂය ඇත. ngrok-skip-බ්‍රවුසර-අනතුරු ඇඟවීම, එය නොමිලේ ngrok උමං මාර්ග බ්‍රව්සර් සඳහා සේවය කරන අන්තර්වාර පිටුව මර්දනය කරයි. නිකුතු හරහා මාර්ග කට්ටල මාරු වේ — /පිටතට 1.0.7 හිදී අතුරුදහන් වේ, සහ /සෙ.මී.ඩී. සමඟ මාරුවෙන් මාරුවට /මත විමසුම — නමුත් සත්කාරකයා කිසිදා වෙනස් නොවේ.

ස්වයං-බැහැර කිරීමේ කතාව

1.0.1 සිට සෑම POM එකක්ම කෞතුක වස්තුවේම ගොඩනැගීම සඳහා සම්පාදක තර්කයක් සකසයි:

-proc: කිසිවක් නැත

එම ධජය විවරණ සැකසීම අක්‍රීය කරයි. මෙහි එහි බලපෑම පෙරcise: සකසනය අඩංගු ව්‍යාපෘතියම සම්පාදනය කළ විට, සකසනය ක්‍රියාත්මක නොවේ.

මෙම ධජය සම්පූර්ණයෙන්ම සාමාන්‍ය භාවිතයන් ඇත. විවරණ සකසනයක් නැව්ගත කරන ව්‍යාපෘතියක් බොහෝ විට bootstrap අතරතුර එම සකසනය තමාටම යෙදීමෙන් වැළකී සිටිය යුතු අතර, ගොඩනැගීමේ මෙවලම් ලියකියවිලි මෙය හරියටම නිර්දේශ කරයි. තනිවම ගත් කල එය කිසිවක් ඔප්පු නොකරයි.

කෙසේ වෙතත්, සකසනය කරන දේ සමඟ ගත් කල, එය නිශ්චිත අසමමිතියක් විස්තර කරයි: කේතය ක්‍රියාත්මක වන්නේ කෞතුක වස්තුවට එරෙහිව සම්පාදනය කරන සෑම කෙනෙකුගේම යන්ත්‍ර මත මිස කෞතුක වස්තුව ගොඩනඟන යන්ත්‍රය මත නොවේ. සේවා ගොනුව හඳුන්වා දෙන එකම නිකුතුවේ - 1.0.1 - සහ ඊට පසු සෑම නිකුතුවකම ධජය දිස්වේ. "සම්පාදන-කාල ක්‍රියාත්මක කිරීම ආරම්භ වන නිකුතුව" සහ "සම්පාදන-කාල ක්‍රියාත්මක කිරීම දේශීයව ක්‍රියා විරහිත කර ඇති නිකුතුව" අතර සහසම්බන්ධය කෞතුක වස්තුවේ ඇති වඩාත්ම ප්‍රයෝජනවත් විශ්ලේෂණාත්මක සංඥාව වන අතර, එය කිසිවක් විසංයෝජනය නොකර සරල-පෙළ POM එකක දෘශ්‍යමාන වේ.

අපි බලපෑම සටහන් කර එතැනින් නතර වෙමු. කෞතුක වස්තු වල කොඩිය සකසා ඇත්තේ මන්දැයි කිසිවක් නොකියයි.

තවත් මෙටාඩේටා කොටසක් සඳහන් කිරීම වටී, බොහෝ දුරට එය බැහැර කිරීම සඳහා. POM ව්‍යාපෘතිය “C2 Lab Payload” ලෙස නම් කරයි, එය “C2 lab payload artifact” ලෙස විස්තර කරයි, සහ MIT සඳහා බලපත්‍ර ලබා දෙයි. මෙවැනි ස්වයං-ලේබල් කිරීම සමහර විට පැකේජයක් පර්යේෂණ අභ්‍යාසයක් බවට සාක්ෂි ලෙස ඉදිරිපත් කෙරේ.cisසජීවී තර්ජනයක් වෙනුවට, සහ ඉඳහිට එම කියවීම නිවැරදියි - ළඟා විය හැකි යටිතල පහසුකම් නොමැති ප්‍රකාශිත කැනරියක් මෙයට වඩා වෙනස් වස්තුවකි. එය මෙහි අදාළ නොවේ. ඕනෑම පාරිභෝගිකයෙකුට ළඟා විය හැකි, නිකුතු නවයක් හරහා තුන් වතාවක් නැවත ගොඩනඟන ලද පිටතට යන යටිතල පහසුකම් සහිත, පොදු ගබඩාවකට ප්‍රකාශයට පත් කරන ලද ක්‍රියාකාරී බද්ධ කිරීමක්, එහි පාර-දත්ත එය හඳුන්වන දේ නොසලකා සජීවී හැකියාවකි. POM හි නම එයට එරෙහිව සම්පාදනය කරන යන්ත්‍රයක සිදුවන දේ ගැන කිසිවක් වෙනස් නොකරයි.

ඉදිකිරීම් යන්ත්‍ර සඳහා දර්ශක

මෙම කෞතුක වස්තුවට එරෙහිව සම්පාදනය කරන ලද ගොඩනැගීමේ ධාරකයක් නම්, සාක්ෂි තැටියේ ස්ථිර බද්ධ කිරීමකට වඩා ගොඩනැගීමේ ලොග් සහ ජාල දුරමිතිය තුළ පවතී - ගෙවීමේ බර සම්පාදක ක්‍රියාවලිය තුළ ක්‍රියාත්මක වන අතර එය සමඟ පිටවෙයි.

භාජනයේ හෝ දේශීය ගබඩා හැඹිලියේ

  • META-INF/services/javax.annotation.processing.Processor නම් කිරීම io.github.davidtimur.c2lab.C2Processor
  • සේවා ගොනුව md5 7d2a08a5c8869a47eea9fa62487dfbe4
  • යටතේ පන්ති io/github/davidtimur/c2lab/: C2Processor, C2Task, Task, සහ 1.0.8 හි අභ්‍යන්තර පන්තිය Task$1

ගොඩනැගීමේදී ප්‍රතිදානය

  • [C2] compile-time execution complete
  • [C2] callback sent → HTTP
  • [C2] callback failed:
  • [C2] shell connected to
  • අන්තර්ක්‍රියාකාරී බැනරය c2-shell; රාමු අවසන් කරන්නා __END__

ක්‍රියාවලියේදී දුරස්ථමිතිය

  • javac දෙමාපියන් ලෙස /bin/sh -c (Unix) හෝ Windows විධාන පරිවර්තකයක්
  • ළමා විධාන whoami, uname -a, pwd (යුනික්ස්) හෝ tasklist (Windows) සම්පාදන පියවරක් මගින් මාපිය කරන ලදී

ජාල දුරස්ථමිතිය තුළ

  • පිටතට යන TCP වෙත 0.tcp.ngrok[.]io:19823 (නිකුතුව 1.0.2)
  • HTTPS වෙත tableful-fervor-crazed.ngrok-free[.]dev, මාර්ග /register, /cmd, /poll, /out (නිකුතු 1.0.3 සිට 1.0.8 දක්වා)
  • ඉල්ලීම් ශීර්ෂය ngrok-skip-browser-warning: true
  • ශරීර ගැළපීම ඉල්ලන්න {"host":...,"os":...,"user":...,"dir":...} or {"version":...,"host":...,"time":...,"output":...}

වින්‍යාස කිරීමේදී

  • පාරිසරික විචල්යයන් CALLBACK, CALLBACK_URL; පද්ධති ගුණාංගය callback.url

ප්‍රකාශක පාර-දත්ත

  • සමූහ io.github.davidtimur; ප්‍රකාශක ලිපිනය davudboi999@gmail[.]com; අත්සන් කිරීමේ යතුර E520C345EF94423D

1.0.8 නිකුතුව ක්‍රියාත්මක කළ ගොඩනැගීමකට අමතර චෙක්පතක් අවශ්‍ය වේ. එම නිකුතුව JVM-පුළුල් පෙරනිමියක් ලෙස අවසර ලත් විශ්වාස කළමනාකරුවෙකු ස්ථාපනය කරන බැවින්, එම JVM තුළම පසුව සිදු කරන ලද ඕනෑම TLS සම්බන්ධතාවයක් - යැපුම් විභේදනය, කෞතුක වස්තුව උඩුගත කිරීම, යෙදවීමේ පියවරක් - සහතික වලංගුකරණයකින් තොරව ඉදිරියට ගියේය. එම කවුළුවෙන් ගමනාගමනය සත්‍යාපනය කළ බව උපකල්පනය නොකළ යුතුය.

සම්පාදනය කරන ලද කෞතුක වස්තු සඳහා වෙනස් ස්කෑන් කිරීමක් අවශ්‍ය වන්නේ ඇයි?

JavacDoor ප්‍රයෝජනවත් පරීක්ෂණ අවස්ථාවක් වන්නේ එය පොදු උපකල්පන දෙකක් එකවර පරාජය කරන නිසාත්, කිසිදු අසාර්ථකත්වයක් එක් වෙළෙන්දෙකුගේ මෙවලම් සඳහා විශේෂිත නොවන නිසාත් ය.

පළමු උපකල්පනය නම් භයානක කේතය මැනිෆෙස්ටයකින් තමන්ව නිවේදනය කරන බවයි. ජීවන චක්‍රය වටා සැපයුම් දාම මෙවලම් විශාල ප්‍රමාණයක් සංවිධානය කර ඇත. hooks, මන්ද npm සහ PyPI සඳහා සාමාන්‍යයෙන් ක්‍රියාව සිදුවන්නේ එතැනිනි. JavacDoor හි කොක්කක් නොමැත. එහි ප්‍රේරකය යනු ජාවා අතුරුමුහුණතක් වන අතර එහි අන්තර්ගතය පන්ති නාමයක් වන සේවා-ලියාපදිංචි ගොනුවකි. එය ස්ථිතිකව අල්ලා ගැනීමට ඔබ ප්‍රතිකාර කළ යුතුය META-INF/services/javax.annotation.processing.Processor ක්‍රියාත්මක කිරීමේ ප්‍රවේශ ලක්ෂ්‍යයක් ලෙස, එයටම ආවේණිකව, a හා සමානව පශ්චාත් ස්ථාපනය ස්ක්‍රිප්ට් — ඉන්පසු නම් කරන ලද පන්තිය බයිට් කේතයට අනුගමනය කරන්න. පරිසර පද්ධතිවලට මෙම හැඩයේ තමන්ගේම ස්වයංක්‍රීය සොයාගැනීමේ යාන්ත්‍රණ ඇති අතර, මෙවලම් මඟින් එය එකක් ලෙස ගණන් කළත් නැතත්, ඒ සෑම එකක්ම ප්‍රවේශ ලක්ෂ්‍යයකි.

දෙවන උපකල්පනය නම්, නූල් මූලාශ්‍ර ගොනු තුළ ජීවත් වන බවයි. jar එකක් සඳහා, අන්ත ලක්ෂ්‍ය, shell විධාන, JSON සැකිලි සහ ලොග් සලකුණු සියල්ලම නියත තටාකවල ඇත .පන්තිය ගොනු. greps පෙළ කිසිවක් සොයා නොගන්නා මෙවලම් - නූල් අපැහැදිලි නිසා නොව, ඒවා පෙළ ස්කෑන් කිරීමකින් විග්‍රහ නොකරන ව්‍යුහගත ද්විමය බහාලුමක ඇති නිසා ය. මෙම සටහනේ ඇති සෑම ජාල දර්ශකයක්ම නියත-තටාක විග්‍රහයෙන් එළියට ආවේය. ඒවායින් එකක් සම්පූර්ණයෙන්ම සාදන ලද https:// පන්ති ගොනුවක් තුළ සරල දර්ශනයකින් පිහිටා ඇති URL; භාජනයේ කියවිය හැකි අන්තර්ගතයේ පෙළ ස්කෑන් කිරීමකින් තවමත් එය මතුපිටට නොඑනු ඇත. මෙහි පරාජය කිරීමට කේතන ක්‍රමයක් නොමැත, කියවීමට බහාලුම් ආකෘතියක් පමණි.

හිඩැස් දෙකම එකම හැඩයකින් යුක්තයි: කෞතුක වස්තුවක ආකෘතියක් අර්ථ දක්වා ඇති අර්ථකථන සහිත ව්‍යුහයක් ලෙස නොව ගොනු මල්ලක් ලෙස සලකනු ලැබීය. නිවැරදි කිරීම ආකර්ශනීය නොවන - බහාලුම විග්‍රහ කරන්න, පරිසර පද්ධතියේම ස්වයංක්‍රීය-සොයාගැනීමේ පිවිසුම් ස්ථාන ගණන් කරන්න, සහ ඒවා සම්පාදනය කරන ලද කේතයට අනුගමනය කරන්න. ගොඩනැගීමේ-කාල දෛශික සඳහා, තුන්වන පරීක්ෂාව ලාභදායී වන අතර පුදුම සහගත ලෙස රෝග විනිශ්චය කරයි: කෞතුක වස්තුවක් පාරිභෝගිකයින්ට කරන දේ එය නිදහස් කරන දෙයට සාපේක්ෂව සසඳන්න. සම්පාදන-කාල සකසනයක් ලියාපදිංචි කරන සහ ඒ සමඟම තමන්ගේම ගොඩනැගීම සඳහා සම්පාදන-කාල සැකසුම් අක්‍රීය කරන කෞතුක වස්තුවක් සරල-පෙළ POM පේළි දෙකකින් ඔබ ගැන යමක් පවසා ඇත.

අද Maven කෞතුක වස්තු පරිභෝජනය කරන කණ්ඩායම් සඳහා, ප්‍රායෝගික පියවර තුනක් අනුගමනය කෙරේ:

  • විවරණ-සකසන මාර්ගය ක්‍රියාත්මක කිරීමේ සීමාවක් ලෙස සලකන්න. එහි ඇති පරායත්තතා ඔබගේ ගොඩනැගීමේ කේතය ක්‍රියාත්මක කරයි. ගොඩනැගීමකට විවරණ සැකසුම් අවශ්‍ය නොවන තැන, -proc: කිසිවක් නැත මෙහි දේශීයව මෙන් ආරක්ෂක වශයෙන්ද ප්‍රයෝජනවත් වේ; එය එසේ කරන තැන, සකසනය කට්ටලය compile classpath වෙතින් උරුම කර ගැනීමට වඩා පැහැදිලිවම pin කරන්න.
  • ලොග් සම්පාදක උපක්‍රියාවලි. කවචයක් බිහි කරන සම්පාදන පියවරක් බොහෝ ව්‍යාපෘතිවල අසාමාන්‍ය වන අතර එය සුළු වශයෙන් අනතුරු ඇඟවිය හැකිය.
  • පාර-දත්ත සාක්ෂියක් ලෙස නොසලකන්න. පැකේජ නාමයක හෝ විස්තරයක ඇති “විද්‍යාගාරය”, “පරීක්ෂණය”, “ගෙවුම් බර” සහ “PoC” යනු විෂය පථ සීමාවන් නොවේ. ළඟා විය හැකි බව සහ හැසිරීම වේ.

කෞතුක වස්තුව සහ එහි මුළු කණ්ඩායමම ඉවත් කරන ලදී මේවන් අපගේ වාර්තාව අනුගමනය කරමින් Central; artifact path සහ group path යන දෙකම දැන් 404 ආපසු ලබා දෙන අතර, Central index එක ගැලපෙන ඛණ්ඩාංක නොමැති බව වාර්තා කරයි. එය මෙම artifact වසා දමයි. එය ජාවා සම්පාදකයේ ලේඛනගත ලක්ෂණයක් වන සහ jar එකක් ප්‍රකාශයට පත් කරන ඕනෑම කෙනෙකුට ලබා ගත හැකි දෛශිකය වසා නොදමයි.

ආශ්රිත

මෙම සටහන කිසිදු බාහිර මූලාශ්‍රයක් උපුටා දක්වන්නේ නැත. සියලුම සොයාගැනීම් ප්‍රකාශිත භාජන නවයේ පළමු ස්ථිතික විශ්ලේෂණය වන අතර, ඉවත් කිරීමට පෙර Maven Central වෙතින් ලබා ගන්නා ලදී. කෞතුක වස්තු වලින් කිසිදු කේතයක් කිසිදු අවස්ථාවක ක්‍රියාත්මක කර නොමැත.

sca-මෙවලම්-මෘදුකාංග-සංයුතිය-විශ්ලේෂණ-මෙවලම්
ඔබේ මෘදුකාංග අවදානම් ප්‍රමුඛතාවය දෙන්න, නිවැරදි කරන්න සහ සුරක්ෂිත කරන්න
ඔබගේ නොමිලේ ගිණුම ලබා ගන්න.
කිසිදු ක්රෙඩිට් කාඩ්පතක් අවශ්ය නොවේ.

ඔබේ මෘදුකාංග සංවර්ධනය සහ බෙදා හැරීම සුරක්ෂිත කරන්න

Xygeni නිෂ්පාදන කට්ටලය සමඟ