JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Java 新手區  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友    訂閱主題
reply to topicthreaded modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 請問如何封住hook api來取得字串?
funy





發文: 78
積分: 0
於 2005-02-05 23:15 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
小弟目前製做了一個利用IE製成的Browser
但是為了避免像譯典通那種滑鼠停佇文字上面,就能取得那段文字的HOOK API
想用類似玻璃的東西蓋在IE上面
目前嘗試用jPanel覆蓋在上面,並將之setOpaque(false)
但都看不到下面的Browser
請問如何解決?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package ie;
 
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import com.webrenderer.*;
import com.borland.dbswing.*;
/**
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2005</p>
 * <p>Company: </p>
 * @author not attributable
 * @version 1.0
 */
 
public class Frame extends JFrame {
  JPanel contentPane;
  BorderLayout borderLayout1 = new BorderLayout();
  IBrowserCanvas browser;
  JTextField textfield;
  JPanel jPanel1 = new JPanel();
  BorderLayout borderLayout2 = new BorderLayout();
  JPanel jPanel2 = new JPanel();
  //Construct the frame
  public Frame() {
    enableEvents(AWTEvent.WINDOW_EVENT_MASK);
    try {
      jbInit();
    }
    catch(Exception e) {
      e.printStackTrace();
    }
  }
 
  //Component initialization
  private void jbInit() throws Exception  {
    contentPane = (JPanel) this.getContentPane();
    contentPane.setLayout(borderLayout1);
    textfield = new JTextField();
    BrowserFactory.setLicenseData("30dtrial", "AOQ342SC08MGD18U37BI8UEI");
    browser = BrowserFactory.spawnInternetExplorer();
    textfield.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e){browser.loadURL(textfield.getText());}});
    this.setSize(new Dimension(1024, 860));
    this.setTitle("Browser");
    contentPane.setOpaque(true);
    jPanel1.setLayout(borderLayout2);
    jPanel2.setBackground(Color.white);
    jPanel2.setForeground(Color.black);
    jPanel2.setOpaque(false);
    browser.loadURL("tw.yahoo.com");
    jPanel1.add(textfield, BorderLayout.NORTH);
    jPanel1.add(BorderLayout.CENTER,(Canvas)browser);
    contentPane.add(jPanel1, BorderLayout.CENTER);
    contentPane.add(jPanel2, BorderLayout.CENTER);
    }
 
  //Overridden so we can exit when window is closed
  protected void processWindowEvent(WindowEvent e) {
    super.processWindowEvent(e);
    if (e.getID() == WindowEvent.WINDOW_CLOSING) {
      System.exit(0);
    }
  }
}
 


tekwei edited on 2005-02-06 01:04
reply to postreply to post
作者 Re:請問如何封住hook api來取得字串? [Re:funy]
nomoney





發文: 67
積分: 1
於 2005-02-06 12:48 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
想到一個做法 不知可不可行
用JLayeredPane裝入browser
上層用JLabel放一個透明的gif檔


reply to postreply to post
作者 Re:請問如何封住hook api來取得字串? [Re:funy]
Duncan

還隱隱作痛

版主

發文: 7816
積分: 39
於 2005-02-06 22:50 user profilesend a private message to usersend email to Duncanreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
funy wrote:
小弟目前製做了一個利用IE製成的Browser
但是為了避免像譯典通那種滑鼠停佇文字上面,就能取得那段文字的HOOK API
想用類似玻璃的東西蓋在IE上面
目前嘗試用jPanel覆蓋在上面,並將之setOpaque(false)
但都看不到下面的Browser
請問如何解決?
1
2
    contentPane.add(jPanel1, BorderLayout.CENTER);
    contentPane.add(jPanel2, BorderLayout.CENTER);



BorderLayout 一個 constraint 只能有一個元件,放兩個元件使用同一個 constraint 並不會有在同一個區域要有數層的效果。

請把你的 glass 放在 frame layered pane 的其它 layer 裡。


reply to postreply to post

給我
辣味豆腐 其餘免談
作者 Re:請問如何封住hook api來取得字串? [Re:Duncan]
Duncan

還隱隱作痛

版主

發文: 7816
積分: 39
於 2005-02-07 00:25 user profilesend a private message to usersend email to Duncanreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
Duncan wrote:
BorderLayout 一個 constraint 只能有一個元件,放兩個元件使用同一個 constraint 並不會有在同一個區域要有數層的效果。

請把你的 glass 放在 frame layered pane 的其它 layer 裡。


後來仔細看了程式碼,你使用的 browser 元件是 Canvas,是 heavyweight component。(假如這段碼沒有 ClassCastException)
1
jPanel1.add(BorderLayout.CENTER,(Canvas)browser);


一個很大的問題是:你沒有辦法讓 lightweight component(JPanel 是其一)疊在 heavyweight component 之上。


reply to postreply to post

給我
辣味豆腐 其餘免談
作者 Re:請問如何封住hook api來取得字串? [Re:Duncan]
atticcat

There is no cookie



發文: 702
積分: 4
於 2005-02-07 01:25 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
Duncan wrote:
後來仔細看了程式碼,你使用的 browser 元件是 Canvas,是 heavyweight component。(假如這段碼沒有 ClassCastException)
1
jPanel1.add(BorderLayout.CENTER,(Canvas)browser);


一個很大的問題是:你沒有辦法讓 lightweight component(JPanel 是其一)疊在 heavyweight component 之上。

即然是用Canvas,是否就應該沒有字被捉到的問題??
因為字都是Canvas自己畫出來的,並不是元件~~..
還是browser這個Canvas裡提供了什麼機制,導致能捉到字~又那個機制是啥?
(Drag&Drop ?..有大大知道的嗎??)
或許避掉這個機制就不用這麼麻煩的加glass了.


reply to postreply to post
作者 Re:請問如何封住hook api來取得字串? [Re:atticcat]
Duncan

還隱隱作痛

版主

發文: 7816
積分: 39
於 2005-02-07 10:17 user profilesend a private message to usersend email to Duncanreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
atticcat wrote:
即然是用Canvas,是否就應該沒有字被捉到的問題??
因為字都是Canvas自己畫出來的,並不是元件~~..


如果這個 browser 是 pure Java 用 Canvas 來實作出來,應該就不會被捉到。但這個元件是用 JNI 去引用 IE 的內核,相當於 java.awt.Button 透過 peer 去使用底層 windowing system 的元件,同樣都有底層元件的功能(特性)。

想要用 pure Java 的方式去拿掉(避開) peer 的功能幾乎是不可能的。真的不想讓人在瀏覽網頁時使用 Dr. EYE(why?)之類的軟體,可以採用純 swing/lightweight 實作出來的 browser 元件。


Duncan edited on 2005-02-07 10:20
reply to postreply to post

給我
辣味豆腐 其餘免談
作者 Re:請問如何封住hook api來取得字串? [Re:funy]
funy





發文: 78
積分: 0
於 2005-02-09 12:50 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
沒錯 我的browser是用IE的核心
這是因為我要顯示.mht的單一封裝網頁
而能顯示mht網頁的好像直接用IE的比較快
避免被HOOK API抓到字串的原因是
不想網頁的文字能夠快速、大量地被複製


reply to postreply to post
作者 Re:請問如何封住hook api來取得字串? [Re:funy]
Duncan

還隱隱作痛

版主

發文: 7816
積分: 39
於 2005-02-09 13:50 user profilesend a private message to usersend email to Duncanreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
funy wrote:避免被HOOK API抓到字串的原因是
不想網頁的文字能夠快速、大量地被複製


這個應該是不需要防了,真的要擷取內容,可以直接從 mht 檔下手。


reply to postreply to post

給我
辣味豆腐 其餘免談
作者 Re:請問如何封住hook api來取得字串? [Re:funy]
funy





發文: 78
積分: 0
於 2005-02-10 22:58 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
怎麼下手?
聽不懂大大的意思


reply to postreply to post
作者 Re:請問如何封住hook api來取得字串? [Re:funy]
Duncan

還隱隱作痛

版主

發文: 7816
積分: 39
於 2005-02-11 13:20 user profilesend a private message to usersend email to Duncanreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
funy wrote:
怎麼下手?
聽不懂大大的意思


我的意思是你的程式是瀏覽 mht 檔,你要防止 user 從你的程式擷取資料並沒有什麼意思,因為 user 可以直接從 mht 檔去取出他要的資訊。


reply to postreply to post

給我
辣味豆腐 其餘免談
作者 Re:請問如何封住hook api來取得字串? [Re:funy]
funy





發文: 78
積分: 0
於 2005-02-13 23:44 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
這個我已經有防了
因為我是用socket傳mht
而且用來瀏覽mht檔的程式也會驗證
普通的瀏覽器看不到我的mht檔
目前我只有想到一種方法
就是當用戶端開啟除了系統的執行程序外
無法開啟我的程式

還有想到另一方法,可是不會做
可不可以用類似防毒引擎去掃有hook api的程式碼?
好像蠻難的


reply to postreply to post
» JWorld@TW »  Java 新手區

reply to topicthreaded modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8