SWTåSwing代ç çåºå«
ããç¬è è¿å»å¦ä¹ è¿Swingï¼ä¹ç®æ¯AWTçå¢å¼ºçå§ï¼ ç°å¨å¼å§å¦ä¹ ä¸ä¸ SWT è¿æ²¡æå¼å§æ·±å ¥ JFace å RCP ä¸æ¥æ¥æ¥å§ å å¦å¥½åºç¡ç åä¸ç¨çæ¥å项ç®ç¨ æ¬æ讨论çå å®¹ä» éäºæå·²ç¥ç SWTåSwing èå´ å¸æè½å¯¹æ Swing ç»éªç人快éäºè§£ SWT ææ帮å©ãã第ä¸ä¸ªä¸åç¹å°±æ¯ SWT çç±»åºç»æä¸å Swing 没æåä¸çç¶ç»ä»¶ SWT ä¸æ好å 个ç¶ç±»
ããâWidget ââ åºæ¬ç SWT GUI ç»ä»¶ï¼ç±»ä¼¼äº Java AWT ä¸ç Component å Swing ä¸ç JComponentï¼ Widget æ¯ä¸ä¸ªæ½è±¡ç±»
ããâControl ââ æ¥ææä½ç³»ç»ç对çç©ççªå£å°é¨ä»¶ï¼æ¢å¥è¯è¯´ å¨æä½ç³»ç»ä¸å ·æåä¸èº«ä»½ï¼ Control æ¯ä¸ä¸ªæ½è±¡ç±»
ããâComposite ââ å å«å ¶ä»æ§ä»¶çæ§ä»¶ï¼ç±»ä¼¼äº Java AWT ä¸ç Container å Swing ä¸ç JPanelï¼
ããâItem ââ å ¶ä»æ§ä»¶å å«ççªå£å°é¨ä»¶ï¼è¯¥æ§ä»¶å¯è½ä¸æ¯å¤åæ§ä»¶ï¼ æ¯å¦å表å表 注æ å å«ä¸äºé¡¹çæ§ä»¶å¾å°å å«å ¶ä»æ§ä»¶ åä¹äº¦ç¶ Item æ¯ä¸ä¸ªæ½è±¡ç±»
ããSWT çç»ä»¶ä¸è½éæç»§æ¿ å ¶æºä»£ç ä¸ä¼æ 注 IMPORTANT This 码下class is <em>not</em> intended to be subclassed å¦æä½ é£æ ·åäº è¿è¡çæ¶å SWT ç³»ç»å°±ä¼æ¥é ä¹ä¸è½ä»»æå å«åç»ä»¶ æäºç»ä»¶ ä¾å¦ Tree åªè½æ¥æ¶ TreeItem ä½ä¸ºå ¶åç»ä»¶ è¿æ ·å¨åä¸äºå¯éç¨çå¾å½¢ç»ä»¶çæ¶åå¿ é¡»æ³¨æ Swing ä¸çåæ³ä¸è½ç´æ¥å¥ç¨å¨ SWT ä¸
ããSwing çææå¾å½¢çé¢ç±»é½ç»§æ¿èª java awt Container è¿æå³çææç Swing ç»ä»¶é½å¯ä»¥å å«ä»»æçåç»ä»¶ ä¹å¯ä»¥è¢«ç»§æ¿ è¿æ¯ä¸¤ä¸ªç±»åºç第ä¸ä¸ªä¸åç¹
ãã第äºä¸ªä¸åç¹å°±æ¯ SWT 没æå©ç¨ Java çèªå¸¦åå¾æ¶éåè½æ¥ç®¡ç对象çéæ¯ å¤§é¨å对象é½å¿ é¡»è°ç¨ disposeï¼ï¼ æ¹å¯å®æèµæºçéæ¾
ãã第ä¸ä¸ªä¸åç¹å°±æ¯å¨ç»ä»¶çæ¾ç¤ºä¸ SWT æ½è±¡äºä¸ä¸ª Display 对象æ¥å¤ç SWT åæä½ç³»ç»åºå±ç»ä»¶çéä¿¡ èµæºç³è¯·éæ¾ äºä»¶å¾ªç¯ ä»»ä½æ¾ç¤ºç SWT ç»ä»¶å¿ é¡»æä¸ä» æä¸ä¸ª Display 对象
ãã第å个ä¸åç¹å°±æ¯ Swing çç»ä»¶å®ç°äº MVC æºå¶ ä½æ¯ SWT 没æï¼ç®åæ¥çï¼æä¾ MVC æºå¶ ä¹å°±æ¯è¯´ç»å¤§å¤æ° SWT ç»ä»¶é½æ¯ä¸å¯ä»¥æ´æ¢æ¾ç¤ºçå¤è§ç æçæææ¯ä¾å¦åç®è¤è¿æ ·çæºå¶ ä¾å¦ å®ç°ä¸ä¸ª Office å¤è§çæ©è²èåæ¡çæ¾ç¤º SWT æ¯ä¸è½éè¿ç®åçç¼ç æ¥å®ç°çï¼ä¹è®¸æ ä½æ¯è¿æ²¡æ¾å°ç¸å ³çèµæï¼
ããSWT çæ¯ä¸ªç»ä»¶å¯¹è±¡æä¾äº setDataï¼Objectï¼ è¿æ ·çæ¹æ³æ¥ç»ç»ä»¶åå¨ä¸ä¸ªæè å¤ä¸ªæ°æ®å¯¹è±¡ Swing ä¸æ²¡æ类似çæ¦å¿µ
ãã第äºä¸ªä¸åç¹å°±æ¯ç»å¤§å¤æ°ç SWT ç»ä»¶å建çæ¶åé½å¿ é¡»æå®ç¶ç»ä»¶åé£æ ¼å±æ§ ä¹å°±æ¯å¿ é¡»æä¸ä¸ª parent 对象 ä¹ä¸è½è¿è¡çæ¶åå¨æåæ´ç¶ç»ä»¶ å ·ä½ä¾å¦ Menu 对象éæ Decorations getParent ï¼ï¼ ä½æ¯å¹¶æ 对åºç setParentï¼ï¼ æ¹æ³ ç»ä»¶å建ä¹åå³èªå¨å å ¥ç¶ç»ä»¶æä¸ºå ¶ä¸å è¿å Swing çå¿ é¡»éè¿ addï¼ï¼ æ¹æ³æ¥å å ¥ç¶ç»ä»¶æ¯ä¸ä¸æ ·ç 大å¤æ°ç SWT ç»ä»¶ä¸æä¾æ åæ°çæé å¨ è¿å°±æå³è¿ä»ä»¬ä¸æ¯ JavaBean è¿ç¹ä¸ Swing çç»å¤§å¤æ°ç»ä»¶é½æ¯ JavaBean
ããæ»ç»ä»¥ä¸è¿äºå 容æ们å¯ä»¥æè§å° SWT æ´åæ¯æä½ç³»ç»æ¬å°ç»ä»¶çä¸ç§å°è£ èä¸æ¯åºäº Java OO çæ¦å¿µå¯¹å ¶è¿è¡æ å° å ¶ä¼ç¹å°±æ¯æ°æ®ç»æç®å
ããå¥½äº æ¥ä¸æ¥è¿æ¯éè¿ä¸äºSWTåSwingç代ç æ¥æ¯è¾å§ 第ä¸ä¸ªæ¯ç»å ¸ç Hello World
ããSWT çæ¬
ãã
ããimport eclipse swt widgets *;
ããpublic class SWTHelloWorld {
ããpublic static void main(String[] args) { Display display = new Display();Shell shell = new Shell(display);shell setText( Hello World! );shell open();while (!shell isDisposed()) { if (!display readAndDispatch())display sleep();}display dispose();}}
ããSwing çæ¬
ãã
ããimport javax swing JFrame;
ããpublic class SwingHelloWorld {
ããpublic static void main(String[] args) { JFrame frame = new JFrame();frame setTitle( Hello World! );frame setDefaultCloseOperation(JFrame DISPOSE_ON_CLOSE);frame setSize( );frame setVisible(true);}}
ããSWT ç Text å±æ§å¨ä¸åçç»ä»¶ä¸æä¸åçææ 对äºçªä½æ¥è¯´å®æ¯æ é¢ å¯¹äºæ§ä»¶æ¥è¯´å®æ¯æ¾ç¤ºçææ¬ Swing ä¸è¿ä¸ªæ¯åå¼ç 对äºçªå£æ¥è¯´æ¯ Title å±æ§ 对äºæ§ä»¶æ¥è¯´æ¯ Text å±æ§ SWT çäºä»¶å¾ªç¯åºäºæ¾å¼ç while æ¨¡å¼ è Swing å·²ç»å¨åºå±å°è£ 好äºäºä»¶ç循ç¯åå¤ç æ以è¿ä¸¤æ®µä»£ç æææ¾çä¸åå°±æ¯ SWT å¤äºæ¶é´å¾ªç¯çé¨å å³æä¸ç²ä½çé¨å
ããæ¥çæ们æ¥ççç»§æ¿ SWT çç»ä»¶ä¼æä»ä¹åæ å¨ Swing ä¸ç»§æ¿ä¸ä¸ªç»ä»¶ç¶ååå ¶ä¸æ·»å åç»ä»¶ ä¾å¦å»ºç«ä¸ä¸ªèªå®ä¹çå·¥å ·æ ç¶ååå ¶ä¸å å ¥åæ ç® å¹¶æåæ¾ç¤ºåºæ¥ è¿æ¯ç»å¸¸è¿è¡çæä½ åçç SWT ä¸
ãã
ããimport eclipse swt widgets Display;import eclipse swt widgets Shell;import eclipse swt widgets ToolItem;import eclipse swt SWT;
ããpublic class NewToolBar extends eclipse swt widgets ToolBar {
ããpublic static void main(String[] args) { try { Display display = Display getDefault();Shell shell = new Shell(display);new NewToolBar(shell SWT NULL);
ããshell open();while (!shell isDisposed()) { if (!display readAndDispatch())display sleep();}} catch (Exception e) { e printStackTrace();}}
ããpublic NewToolBar(Shell parent int style) { super(parent style);new ToolItem(this SWT NULL);}
ãã}
lishixinzhi/Article/program/Java/hx//冰蝎,从入门到魔改
“冰蝎”是码下一个动态二进制加密网站管理客户端,第一代webshell管理工具“菜刀”的码下流量特征显著,容易被检测。码下基于流量加密的码下http2相关源码webshell增多,“冰蝎”应运而生。码下它以JAVA为基础,码下跨平台使用,码下功能强大,码下包括基本信息、码下命令执行、码下虚拟终端、码下米发源码文件管理等。码下
“冰蝎”客户端在服务端支持open_ssl时使用AES加密算法,码下密钥长度为位。加密流程从客户端发起带密码的请求开始,服务端产生随机密钥,将密钥写入Session并将密钥返回客户端。锤子首页源码客户端获取密钥后,将payload用AES算法加密,以POST形式发送请求。服务端收到请求后,使用Session中的密钥解密请求的Body部分,执行Payload,Python源码汇总并将结果返回给客户端。客户端获取结果并显示在UI界面上。在流量中,冰蝎在执行Payload之后的返回并未显示加密。
最新版本的“冰蝎”(v2.0.1)于年2月发布后未进行更新。各大厂商的android 源码 美观检测系统及WAF均对其特征进行了分析并加入规则。攻防技术不断发展,需要不断更新自我以保持攻防的有效性。
要魔改“冰蝎”,首先需要反编译JAR包获得源码,使用反编译工具如JD-GUI,然后通过Eclipse安装WindowsBuilder创建SWT项目。导入反编译后的源码和JAR包,修复报错并尝试将源码跑起来。成功跑起来反编译后的代码后,可以进行特征擦除,包括密钥交换时的参数、header中的Content-Type、User-Agent、Accept、二次密钥获取、以及response中返回密钥等。
在实际检测中,单一规则检测对“冰蝎”的误报率较高。通过魔改程序可以在一定时间内绕过安全设备的检测,但真正保持攻防有效性需要不断更新和学习。安全之路漫长,共勉。
2024-12-24 00:17
2024-12-23 23:59
2024-12-23 22:39
2024-12-23 22:33
2024-12-23 22:28