整合后台服务和驱动代码注入
整合后台服务和驱动代码注入
Home键的驱动代码:
/dev/input/event1: 0001 0066 00000001
/dev/input/event1: 0000 0000 00000000
/dev/input/event1: 0001 0066 00000000
/dev/input/event1: 0000 0000 00000000
对应输入的驱动代码:
sendevent/dev/input/event1 0 0 0
sendevent/dev/input/event1 1 102 1
sendevent/dev/input/event1 0 0 0
sendevent/dev/input/event1 1 102 0
sendevent/dev/input/event1 0 0 0
sendevent /dev/input/event1 0 0 0
从主页点击QQ图标启动QQ的驱动代码:
/dev/input/event4: 0001 014a 00000001
/dev/input/event4: 0003 0030 00000001
/dev/input/event4: 0003 0035 00000053
/dev/input/event4: 0003 0036 00000394
/dev/input/event4: 0000 0002 00000000
/dev/input/event4: 0000 0000 00000000
/dev/input/event4: 0003 0030 00000001
/dev/input/event4: 0003 0035 00000052
/dev/input/event4: 0003 0036 00000394
/dev/input/event4: 0000 0002 00000000
/dev/input/event4: 0000 0000 00000000
/dev/input/event4: 0003 0030 00000001
/dev/input/event4: 0003 0035 00000052
/dev/input/event4: 0003 0036 00000394
/dev/input/event4: 0000 0002 00000000
/dev/input/event4: 0000 0000 00000000
/dev/input/event4: 0001 014a 00000000
/dev/input/event4: 0000 0002 00000000
/dev/input/event4: 0000 0000 00000000
对应输入的驱动代码:
sendevent/dev/input/event4 0 0 0
sendevent/dev/input/event4 1 330 1
sendevent/dev/input/event4 3 48 1
sendevent/dev/input/event4 3 53 83
sendevent/dev/input/event4 3 54 916
sendevent/dev/input/event4 0 2 0
sendevent/dev/input/event4 0 0 0
sendevent/dev/input/event4 3 48 1
sendevent/dev/input/event4 3 53 82
sendevent/dev/input/event4 3 54 916
sendevent/dev/input/event4 0 2 0
sendevent/dev/input/event4 0 0 0
sendevent/dev/input/event4 3 48 1
sendevent/dev/input/event4 3 53 82
sendevent/dev/input/event4 3 54 916
sendevent/dev/input/event4 0 2 0
sendevent/dev/input/event4 0 0 0
sendevent/dev/input/event4 1 330 0
sendevent/dev/input/event4 0 2 0
sendevent/dev/input/event4 0 0 0
sendevent/dev/input/event4 0 0 0
输入的驱动代码优化:
sendevent /dev/input/event4 0 0 0
sendevent /dev/input/event4 1 330 1
sendevent /dev/input/event4 3 53 83
sendevent /dev/input/event4 3 54 916
sendevent /dev/input/event4 0 0 0
sendevent /dev/input/event4 1 330 0
sendevent /dev/input/event4 0 0 0
sendevent /dev/input/event4 0 0 0
在弹出的输入法上点击字母n
/dev/input/event4: 0001 014a 00000001
/dev/input/event4: 0003 0030 00000001
/dev/input/event4: 0003 0035 00000205
/dev/input/event4: 0003 0036 00000463
/dev/input/event4: 0000 0002 00000000
/dev/input/event4: 0000 0000 00000000
/dev/input/event4: 0003 0030 00000001
/dev/input/event4: 0003 0035 00000205
/dev/input/event4: 0003 0036 00000463
/dev/input/event4: 0000 0002 00000000
/dev/input/event4: 0000 0000 00000000
/dev/input/event4: 0003 0030 00000001
/dev/input/event4: 0003 0035 00000205
/dev/input/event4: 0003 0036 00000463
/dev/input/event4: 0000 0002 00000000
/dev/input/event4: 0000 0000 00000000
/dev/input/event4: 0001 014a 00000000
/dev/input/event4: 0000 0002 00000000
/dev/input/event4: 0000 0000 00000000
对应输入的驱动代码:
sendevent/dev/input/event4 0 0 0
sendevent/dev/input/event4 1 330 1
sendevent/dev/input/event4 3 48 1
sendevent/dev/input/event4 3 53 517
sendevent/dev/input/event4 3 54 1123
sendevent/dev/input/event4 0 2 0
sendevent/dev/input/event4 0 0 0
sendevent/dev/input/event4 3 48 1
sendevent/dev/input/event4 3 53 517
sendevent/dev/input/event4 3 54 1123
sendevent/dev/input/event4 0 2 0
sendevent/dev/input/event4 0 0 0
sendevent/dev/input/event4 3 48 1
sendevent/dev/input/event4 3 53 517
sendevent/dev/input/event4 3 54 1123
sendevent/dev/input/event4 0 2 0
sendevent/dev/input/event4 0 0 0
sendevent/dev/input/event4 1 330 0
sendevent/dev/input/event4 0 2 0
sendevent/dev/input/event4 0 0 0
sendevent/dev/input/event4 0 0 0
优化后的驱动输入代码:
sendevent /dev/input/event4 00 0
sendevent /dev/input/event4 1330 1
sendevent /dev/input/event4 353 517
sendevent /dev/input/event4 354 1123
sendevent /dev/input/event4 00 0
sendevent /dev/input/event4 1330 0
sendevent /dev/input/event4 00 0
sendevent /dev/input/event4 00 0
点击发送按钮
/dev/input/event4: 0001 014a 00000001
/dev/input/event4: 0003 0030 00000001
/dev/input/event4: 0003 0035 00000292
/dev/input/event4: 0003 0036 0000027f
/dev/input/event4: 0000 0002 00000000
/dev/input/event4: 0000 0000 00000000
/dev/input/event4: 0003 0030 00000001
/dev/input/event4: 0003 0035 00000291
/dev/input/event4: 0003 0036 0000027f
/dev/input/event4: 0000 0002 00000000
/dev/input/event4: 0000 0000 00000000
/dev/input/event4: 0003 0030 00000001
/dev/input/event4: 0003 0035 00000292
/dev/input/event4: 0003 0036 0000027f
/dev/input/event4: 0000 0002 00000000
/dev/input/event4: 0000 0000 00000000
/dev/input/event4: 0003 0030 00000001
/dev/input/event4: 0003 0035 00000292
/dev/input/event4: 0003 0036 0000027f
/dev/input/event4: 0000 0002 00000000
/dev/input/event4: 0000 0000 00000000
/dev/input/event4: 0001 014a 00000000
/dev/input/event4: 0000 0002 00000000
/dev/input/event4: 0000 0000 00000000
对应输入的驱动代码:
sendevent/dev/input/event4 0 0 0
sendevent/dev/input/event4 1 330 1
sendevent/dev/input/event4 3 48 1
sendevent/dev/input/event4 3 53 658
sendevent/dev/input/event4 3 54 639
sendevent/dev/input/event4 0 2 0
sendevent/dev/input/event4 0 0 0
sendevent/dev/input/event4 3 48 1
sendevent/dev/input/event4 3 53 657
sendevent/dev/input/event4 3 54 639
sendevent/dev/input/event4 0 2 0
sendevent/dev/input/event4 0 0 0
sendevent/dev/input/event4 3 48 1
sendevent/dev/input/event4 3 53 658
sendevent/dev/input/event4 3 54 639
sendevent/dev/input/event4 0 2 0
sendevent/dev/input/event4 0 0 0
sendevent/dev/input/event4 3 48 1
sendevent/dev/input/event4 3 53 658
sendevent/dev/input/event4 3 54 639
sendevent/dev/input/event4 0 2 0
sendevent/dev/input/event4 0 0 0
sendevent/dev/input/event4 1 330 0
sendevent /dev/input/event40 2 0
sendevent/dev/input/event4 0 0 0
sendevent/dev/input/event4 0 0 0
优化后的驱动输入代码:
sendevent /dev/input/event4 0 0 0
sendevent /dev/input/event4 1 330 1
sendevent /dev/input/event4 3 53 658
sendevent /dev/input/event4 3 54 639
sendevent /dev/input/event4 0 0 0
sendevent /dev/input/event4 1 330 0
sendevent /dev/input/event4 0 0 0
sendevent /dev/input/event4 0 0 0
所以整套动作如下:
1、按下Home键,让手机界面回到系统主页
Home键对应输入的驱动代码:
sendevent /dev/input/event1 0 0 0
sendevent /dev/input/event1 1 102 1
sendevent /dev/input/event1 0 0 0
sendevent /dev/input/event1 1 102 0
sendevent /dev/input/event1 0 0 0
sendevent /dev/input/event1 0 0 0
2、从主页点击QQ图标启动QQ
驱动代码
sendevent /dev/input/event4 0 0 0
sendevent /dev/input/event4 1 330 1
sendevent /dev/input/event4 3 53 83
sendevent /dev/input/event4 3 54 916
sendevent /dev/input/event4 0 0 0
sendevent /dev/input/event4 1 330 0
sendevent /dev/input/event4 0 0 0
sendevent /dev/input/event4 0 0 0
3、在弹出的输入法上点击字母n
驱动代码
sendevent /dev/input/event4 0 0 0
sendevent /dev/input/event4 1 330 1
sendevent /dev/input/event4 3 53 517
sendevent /dev/input/event4 3 54 1123
sendevent /dev/input/event4 0 0 0
sendevent /dev/input/event4 1 330 0
sendevent /dev/input/event4 0 0 0
sendevent /dev/input/event4 0 0 0
4、点击发送按钮
sendevent /dev/input/event4 0 0 0
sendevent /dev/input/event4 1 330 1
sendevent /dev/input/event4 3 53 658
sendevent /dev/input/event4 3 54 639
sendevent /dev/input/event4 0 0 0
sendevent /dev/input/event4 1 330 0
sendevent /dev/input/event4 0 0 0
sendevent /dev/input/event4 0 0 0
5、按下Home键,让手机界面回到系统主页
Home键对应输入的驱动代码:
sendevent /dev/input/event1 0 0 0
sendevent /dev/input/event1 1 102 1
sendevent /dev/input/event1 0 0 0
sendevent /dev/input/event1 1 102 0
sendevent /dev/input/event1 0 0 0
sendevent /dev/input/event1 0 0 0
实现的效果如下:就是从我的手机qq给通过我的设备发送一个字母n
这是发送界面
这是接受界面
上面的步骤是怎么获取指令的动作,下面描述的这个例子是我从手机主页打开QQ,然后从搜索列表中找出我的某个好友,然后给他发送消息“你好”,然后返回主页面。
当然,整套系统不能连续做,中间要有停顿,否则有的时候系统还没有把响应动作做完,下一个动作又开始了,导致动作出错。可以在代码里用sleep函数控制等待的时间。整套动作在PC上用终端演示完全没有问题,下一步就可以在手机上实现了。
具体的在代码里的实现:
第一步:在我前两篇博客里的有个关于Android服务的例子,名字叫Servic.zip,在这个例子里加入了一个动作列表的类,用来保存动作指令,就是上面的指令序列。
第二步:将我上一篇博客里用按钮来注入代码的响应函数doXue()重新封装一下,放服务的类里面,我把参数换成了String数组,每次传一个动作的指令数组过去,然后用sleep控制等待时间。比如,启动QQ时间会比较长,我就设置成等待5秒再继续执行下一个动作。
好了,核心代码如下:
指令类:从这个类的定义里面可以清楚的看到每个步骤了 ,我就不多解释每个数组里面的指令的功能了,都写在注释里了。
- public class OrderList {
- //1---Home键对应输入的驱动代码
- static String[] orderHome1 = {
- "sendevent /dev/input/event1 0 0 0",
- "sendevent /dev/input/event1 1 102 1",
- "sendevent /dev/input/event1 0 0 0",
- "sendevent /dev/input/event1 1 102 0",
- "sendevent /dev/input/event1 0 0 0",
- "sendevent /dev/input/event1 0 0 0"
- };
- //2---从主页点击QQ图标启动QQ的驱动代码
- static String[] orderQQ2 = {
- "sendevent /dev/input/event4 0 0 0",
- "sendevent /dev/input/event4 1 330 1",
- "sendevent /dev/input/event4 3 53 83",
- "sendevent /dev/input/event4 3 54 916",
- "sendevent /dev/input/event4 0 0 0",
- "sendevent /dev/input/event4 1 330 0",
- "sendevent /dev/input/event4 0 0 0",
- "sendevent /dev/input/event4 0 0 0"
- };
- //3---在弹出的QQ界面上点击搜索
- static String[] orderSearch3 = {
- "sendevent /dev/input/event4 0 0 0",
- "sendevent /dev/input/event4 1 330 1",
- "sendevent /dev/input/event4 3 53 363",
- "sendevent /dev/input/event4 3 54 194",
- "sendevent /dev/input/event4 0 0 0",
- "sendevent /dev/input/event4 1 330 0",
- "sendevent /dev/input/event4 0 0 0",
- "sendevent /dev/input/event4 0 0 0"
- };
- //4---输入hyl 选择何一柳 前提是输入法是中文输入模式
- static String[] orderInput4 = {
- "sendevent /dev/input/event4 0 0 0",
- "sendevent /dev/input/event4 1 330 1",
- "sendevent /dev/input/event4 3 53 219",
- "sendevent /dev/input/event4 3 54 1014",
- "sendevent /dev/input/event4 0 0 0",
- "sendevent /dev/input/event4 1 330 0",
- "sendevent /dev/input/event4 0 0 0",
- "sendevent /dev/input/event4 1 330 1",
- "sendevent /dev/input/event4 3 53 530",
- "sendevent /dev/input/event4 3 54 1127",
- "sendevent /dev/input/event4 0 0 0",
- "sendevent /dev/input/event4 1 330 0",
- "sendevent /dev/input/event4 0 0 0",
- "sendevent /dev/input/event4 1 330 1",
- "sendevent /dev/input/event4 3 53 367",
- "sendevent /dev/input/event4 3 54 1003",
- "sendevent /dev/input/event4 0 0 0",
- "sendevent /dev/input/event4 1 330 0",
- "sendevent /dev/input/event4 0 0 0",
- "sendevent /dev/input/event4 1 330 1",
- "sendevent /dev/input/event4 3 53 130",
- "sendevent /dev/input/event4 3 54 768",
- "sendevent /dev/input/event4 0 0 0",
- "sendevent /dev/input/event4 1 330 0",
- "sendevent /dev/input/event4 0 0 0",
- "sendevent /dev/input/event4 0 0 0"
- };
- //5---从搜索结果中选择何一柳
- static String[] orderSelect5 = {
- "sendevent /dev/input/event4 0 0 0",
- "sendevent /dev/input/event4 1 330 1",
- "sendevent /dev/input/event4 3 53 438",
- "sendevent /dev/input/event4 3 54 223",
- "sendevent /dev/input/event4 0 0 0",
- "sendevent /dev/input/event4 1 330 0",
- "sendevent /dev/input/event4 0 0 0"
- };
- //6---点击输入框 弹出输入法
- static String[] orderGetInput6 = {
- "sendevent /dev/input/event4 0 0 0",
- "sendevent /dev/input/event4 1 330 1",
- "sendevent /dev/input/event4 3 53 412",
- "sendevent /dev/input/event4 3 54 1233",
- "sendevent /dev/input/event4 0 0 0",
- "sendevent /dev/input/event4 1 330 0",
- "sendevent /dev/input/event4 0 0 0",
- "sendevent /dev/input/event4 0 0 0"
- };
- //7---从输入法打字 输入 你好 四个字
- static String[] orderInputText7 = {
- "sendevent /dev/input/event4 0 0 0",
- "sendevent /dev/input/event4 1 330 1",
- "sendevent /dev/input/event4 3 53 524",
- "sendevent /dev/input/event4 3 54 1020",
- "sendevent /dev/input/event4 0 0 0",
- "sendevent /dev/input/event4 1 330 0",
- "sendevent /dev/input/event4 0 0 0",
- "sendevent /dev/input/event4 1 330 1",
- "sendevent /dev/input/event4 3 53 222",
- "sendevent /dev/input/event4 3 54 1006",
- "sendevent /dev/input/event4 0 0 0",
- "sendevent /dev/input/event4 3 53 221",
- "sendevent /dev/input/event4 3 54 1006",
- "sendevent /dev/input/event4 1 330 0",
- "sendevent /dev/input/event4 0 0 0",
- "sendevent /dev/input/event4 1 330 1",
- "sendevent /dev/input/event4 3 53 209",
- "sendevent /dev/input/event4 3 54 1009",
- "sendevent /dev/input/event4 0 0 0",
- "sendevent /dev/input/event4 1 330 0",
- "sendevent /dev/input/event4 0 0 0",
- "sendevent /dev/input/event4 1 330 1",
- "sendevent /dev/input/event4 3 53 350",
- "sendevent /dev/input/event4 3 54 903",
- "sendevent /dev/input/event4 0 0 0",
- "sendevent /dev/input/event4 1 330 0",
- "sendevent /dev/input/event4 0 0 0",
- "sendevent /dev/input/event4 1 330 1",
- "sendevent /dev/input/event4 3 53 521",
- "sendevent /dev/input/event4 3 54 992",
- "sendevent /dev/input/event4 0 0 0",
- "sendevent /dev/input/event4 1 330 0",
- "sendevent /dev/input/event4 0 0 0",
- "sendevent /dev/input/event4 1 330 1",
- "sendevent /dev/input/event4 3 53 115",
- "sendevent /dev/input/event4 3 54 762",
- "sendevent /dev/input/event4 0 0 0",
- "sendevent /dev/input/event4 1 330 0",
- "sendevent /dev/input/event4 0 0 0",
- "sendevent /dev/input/event4 0 0 0"
- };
- //8---点击发送按钮代码
- static String[] orderInputSend8 = {
- "sendevent /dev/input/event4 0 0 0",
- "sendevent /dev/input/event4 1 330 1",
- "sendevent /dev/input/event4 3 53 658",
- "sendevent /dev/input/event4 3 54 639",
- "sendevent /dev/input/event4 0 0 0",
- "sendevent /dev/input/event4 1 330 0",
- "sendevent /dev/input/event4 0 0 0",
- "sendevent /dev/input/event4 0 0 0"
- };
- }
实际执行这些指令的函数doXue(String[] orders)
- //指令执行函数
- void doXue(String[] orders){
- Log.i(TAG, "doXue-----------------");
- Runtime runtime = Runtime.getRuntime();
- DataOutputStream dataOut;
- try {
- Process process = runtime.exec("su ");
- InputStream in = process.getInputStream();
- BufferedReader bufferReader = new BufferedReader(
- new InputStreamReader(in));
- BufferedReader err=new BufferedReader(new InputStreamReader(process.getErrorStream()));
- String line = null;
- dataOut = new DataOutputStream(process.getOutputStream());
- //点击发送按钮
- for(String order : orders){
- dataOut.writeBytes(order + ";");
- }
- dataOut.flush();
- dataOut.close();
- process.waitFor();
- while ((line = err.readLine()) != null) {
- Log.i(TAG,line);
- }
- while ((line = bufferReader.readLine()) != null) {
- Log.i(TAG,line);
- }
- } catch (Exception e) {
- e.printStackTrace();
- Log.i(TAG,e.getMessage());
- }finally{
- }
- }
最后是调用这个注入驱动代码的服务的代码:
- @Override
- public void onCreate() {
- // TODO Auto-generated method stub
- Log.i(TAG, "Service-----------------created");
- super.onCreate();
- Thread thread = new Thread() {
- @Override
- public void run() {
- Log.i(TAG, "Service-----------------");
- try {
- Log.i(TAG, "Service-----------------orderHome1");
- doXue(OrderList.orderHome1);
- Thread.sleep(1000 * 2);
- Log.i(TAG, "Service-----------------orderHome1");
- doXue(OrderList.orderHome1);
- Thread.sleep(1000 * 2);
- Log.i(TAG, "Service-----------------orderQQ2");
- doXue(OrderList.orderQQ2);
- Thread.sleep(1000 * 5); //启动QQ时间设置稍微长一点
- Log.i(TAG, "Service-----------------orderSearch3");
- doXue(OrderList.orderSearch3);
- Thread.sleep(1000 * 2);
- Log.i(TAG, "Service-----------------orderInput4");
- doXue(OrderList.orderInput4);
- Thread.sleep(1000 * 2);
- Log.i(TAG, "Service-----------------orderSelect5");
- doXue(OrderList.orderSelect5);
- Thread.sleep(1000 * 2);
- Log.i(TAG, "Service-----------------orderGetInput6");
- doXue(OrderList.orderGetInput6);
- Thread.sleep(1000 * 2);
- Log.i(TAG, "Service-----------------orderInputText7");
- doXue(OrderList.orderInputText7);
- Thread.sleep(1000 * 2);
- Log.i(TAG, "Service-----------------orderInputSend8");
- doXue(OrderList.orderInputSend8);
- Thread.sleep(1000 * 2);
- doXue(OrderList.orderHome1);
- } catch (InterruptedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- };
- thread.start();
- }
最后就是启动服务了,这个代码就不贴了,网上很多,之前的例子里面也有。这个demo的最终效果就是,打开这个app以后,点击启动服务,然后程序会自动请求root权限,如果你的手机root过,或者有root权限管理工具的话,就选择授权,然后,手机会自动回到主页,然后打开QQ,然后搜索联系人,然后发消息,最后再次回到主页。
Demo的下载地址:不要积分。
http://download.csdn.net/detail/diaoliangwang/7402083
演示效果的gif
当然了,再次说明下,这种驱动代码不同类型不同款的手机是不同的,同款手机如果Rom不同可能也不同,上面的指令仅仅针对我自己的手机,所以如果你用上面的代码来测试你自己的手机的话,应该不会又效果,随便举个例子,我的QQ图标放在主页的那个位置,你的QQ不一定也在那个位置,再加上屏幕大小还不一样。
因此,后面我会继续改进,开始时候让用户自己在自己的手机上录制动作,程序获取手机的相关驱动代码,然后编制成一套动作就行了。
后面还需要优化的地方:
1、我在前一篇博客里自己写的驱动代码16进制转10进制转换工具还不够完善,没有去处重复的指令,比如系统模拟了同一个点的多次点击,这个完全可以过滤掉,还有一些没用的驱动代码也可以过滤掉。让输出的结果更加简洁,后面有时间我会继续优化上传。
2、目前demo的动作还不够连贯,需要自己编写代码,后面需要改成让程序自动录制用户的操作,这就涉及到另一个问题,怎么用服务从android后台拿到写入驱动里的程序,而不是从PC端去获取,让整个录制动作,到系统再次响应同一个动作连续在一起。
整合后台服务和驱动代码注入相关推荐
- android远程控制(三)----通过后台服务实现系统点击事件模拟
整合后台服务和驱动代码注入 Home键的驱动代码: /dev/input/event1: 0001 0066 00000001 /dev/input/event1: 0000 0000 0000000 ...
- JavaScript脚本访问后台服务实例
js访问后台服务实例 前端代码: function GetHeatMapFunc() { var s_time = "2017-11-12"; va ...
- IBM整合管理服务:云时代驱动IT服务创新
本文讲的是IBM整合管理服务:云时代驱动IT服务创新[IT168 专稿]日前,IBM全球信息科技服务部(GTS)在位于苏州工业园区的苏州国科数据中心举办IBM管理服务中心开业仪式.该整合管理服务中心坐 ...
- 大恶人吉日嘎拉之走火入魔闭门造车之.NET疯狂架构经验分享系列之(二)后台服务代码部分
程序写太长了,大家看着也累,我也写着也很辛苦,接下来,还是写得简短一些,尽量多一些截图,少一些文字吧. 同样是,欢迎指点批评的同学,我虚心学习提高,改改以往的高姿态. 架设软件系统就像大家看饭店厨师炒 ...
- 大恶人吉日嘎拉之走火入魔闭门造车之.NET疯狂架构经验分享系列之(二)后台服务代码部分...
程序写太长了,大家看着也累,我也写着也很辛苦,接下来,还是写得简短一些,尽量多一些截图,少一些文字吧. 同样是,欢迎指点批评的同学,我虚心学习提高,改改以往的高姿态. 架设软件系统就像大家看饭店厨师炒 ...
- Spring-Cloud-Gateway之代码注入漏洞及解决
目录 1. 背景 2. 漏洞简介 3. 原理 3. 1Spring-Cloud-Gateway的原理 3.1.1 核心流程 3.1.2 流程说明 3.1.3 常见的 API 网关实现方案主要有以下 6 ...
- win 2003 IIS如何防止代码注入
网站经常给别人加了代码,好多人认为这是红色代码,不过也有一些是开放FSO权限,给别人注入,但通阅读本文希望对你有帮助. 什么是ARP? ARP(Addre***esolutionProtocol)地址 ...
- 程序员疫苗:代码注入
几个月在我的微博上说过要建一个程序员疫苗网站,希望大家一起来提交一些错误示例的代码,来帮助我们新入行的程序员,不要让我们的程序员一代又一代的再重复地犯一些错误.很多程序上错误就像人类世界的病毒一样,我 ...
- Discuz!uc.key泄露导致代码注入漏洞uc.php的解决方法
漏洞名称:Discuz uc.key泄露导致代码注入漏洞 漏洞描述:在Discuz中,uc_key是UC客户端与服务端通信的通信密钥,discuz中的/api/uc.php存在代码写入漏洞,导致黑客可 ...
最新文章
- 22岁复旦大学生拿下深度学习挑战赛冠军:明明可以靠脸吃饭,却偏偏要靠才华
- java constant 类_如何从Constant java为注释提供值
- 一个百亿级日志系统是怎么设计出来的?
- LeetCode 1009. 十进制整数的反码(位运算)
- Transformer 是万能的吗?
- c 文件操作_你电脑用久了,会有多少重复文件?快用它来整理一下吧
- ngnix的简单转发请求之server和location配置详解
- Silverlight 密码框 Focus
- CCF CSP202009-2 风险人群筛查
- 巧妙解决Windows 7系统中软件乱码问题
- .com才是顶级域名,baidu.com是二级域名
- PS使用:windows解决Adobe Photoshop 2020(PS2020)闪退
- java 基本语法 二_java基础语法2
- 创建数据库中,常用的MySQL命令(含解析与全部代码)
- 炼石:栉风沐雨七载路,不负韶华再出发
- PLC不用编程,以太网方式与多台智能仪表、变频器等串口设备通讯(基于智能网关)
- C++调用ffmpeg批量合并bilibili缓存视频
- 近视眼用什么台灯比较好?防近视眼护眼台灯排名
- 多次办理这项公积金业务都涉及到查询信用报告,是否会影响将来申请贷款?
- SQL语句--关于赋值
热门文章
- bugfix:MySQL内存使用率无限增长以及kill手法
- LeetCode 572. 另一个树的子树 思考分析
- flush python_带有示例的Python File flush()方法
- eval 函数 代替函数_eval()函数以及JavaScript中的示例
- linux内核测试,Linux内核测试的生命周期
- HTML5 学习笔记
- Oracle访问同义词连接超时,利用同义词解决oracle用户访问其它schema的对象
- python三大器_Python - 三大器 迭代器,生层器,装饰器
- linux之地址空间
- android文本复制自定义剪切板,android 剪切板-文本复制、粘贴