- 博客(141)
- 资源 (2)
- 收藏
- 关注
原创 第一课 记事本的WriteFile API HOOK
前面一直在写dll hook技术的学习心得,但是现在又来写API hook的体会,很多人都不理解,为什么要学习API hook,dll hook已经那么强大,为什么还要把API hook单独拿出来学习?在我学习完这些内容之后,我深刻的认识到二者的差别,请听我说。使用dll注入技术可以驱使目标进程强制加载用户指定的dll文件,使用该技术时,先在要注入的dll中创建hook代码和设置代码,然后在D...
2018-11-01 22:03:24 3529 2
原创 2021-01-08
Version 1.8.0_201 of the JVM is not suitable for this product. Version: 11 or greater is required.注意是jdk版本的问题不是jre,所以找到jdk位置:复制路径C:\Program Files\Java\jdk-15.0.1\bin\javaw.exe打开eclipse.exe同目录下的eclipse.ini:注意:我的eclipse在C:\Users\roger\eclipse\java
2021-01-08 19:29:50 190
原创 error LNK2019: 无法解析的外部符号 _main
一,问题描述MSVCRTD.lib(crtexew.obj): errorLNK2019:无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCRTStartup 中被引用Debug\jk.exe : fatal error LNK1120: 1个无法解析的外部命令error LNK2001: unresolved externalsymbol _WinMain@16debug/main.exe:fatal error LNK 1120:1unresolved ex..
2021-01-07 18:58:26 9483
转载 C语言之对char*与char[]的理解
本文实例分析了C语言中char * 和 char []的区别。分享给大家供大家参考之用。具体分析如下:一般来说,很多人会觉得这两个定义效果一样,其实差别很大。以下是个人的一些看法,有不正确的地方望指正。本质上来说,char *s定义了一个char型的指针,它只知道所指向的内存单元,并不知道这个内存单元有多大,所以:当char *s = “hello”;后,不能使用s[0]=‘a’;语句进行赋值。这是将提示内存不能为"written"。当用char s[]=“hello”;后,完全可以使用s[0]=‘
2020-05-14 13:55:22 551
原创 解决Ubuntu16.04卡在开机画面
首先,开机时发现卡在下图的Ubuntu图标画面:重启,疯狂按ESC键,在“Ubuntu高级选项”中,按回车,选择执行 带有“(recovery mode)”的选项,继续回车。这里我使用的是 老内核(高级选项中有两个版本Ubuntu,我选的是版本较早的)。因为我第一次使用新内核好像并没有起作用,但可能是个案或者我自己当时操作原因。在recovery mode中选择 “resume” ...
2020-01-08 00:44:34 8637
原创 VS2017中设置程序默认以管理员身份运行权限
在Windows编程中,运行程序时出现错误,错误返回值为5,这表示程序运行的权限不够,在Visual Studio 2017 中设置程序以管理员身份运行的步骤是:直接项目右键---属性---连接器---清单文件---uac执行级别 选择requireAdministrator 重新编译 即可...
2019-12-12 17:52:32 1564 1
原创 第九十三课.向上转型
Java 转型问题其实并不复杂,只要记住一句话:父类引用指向子类对象。什么叫父类引用指向子类对象,父类定义的对象存放的子类的地址向上转型:通俗地讲即是将子类对象转为父类对象。此处父类对象可以是接口举个例子:有2个类,Father 是父类,Son 类继承自 Father。Father xnx1 = new Son(); // 这就叫 upcasting (向上转型)// 现...
2019-09-16 14:04:42 164
原创 第九十二课.什么是多态
什么是java的多态:多态分为两种1.编译时多态:方法的重载;2.运行时多态:JAVA运行时系统根据调用该方法的实例的类型来决定选择调用哪个方法则被称为运行时多态。(我们平时说得多的事运行时多态,所以多态主要也是指运行时多态);上述描述认为重载也是多态的一种表现,不过多态主要指运行时多态。运行时多态:1.面向对象的三大特性:封装、继承、多态。从一定角度来看,封装和继承几乎都是为多...
2019-09-16 13:59:27 455
原创 第九十一课.关于构造代码块
什么是构造代码块:构造代码块在创建对象时被调用,每次创建对象都会调用一次,但是优先于构造函数执行。需要注意的是,听名字我们就知道,构造代码块不是优先于构造函数执行,而是依托于构造函数,也就是说,如果你不实例化对象,构造代码块是不会执行的。构造代码块的作用:和构造函数的作用类似,都能对对象进行初始化,并且只要创建一个对象,构造代码块都会执行一次。但是反过来,构造函数则不一定每个对象建立时...
2019-09-16 13:56:34 299
原创 第九十课.final关键字
final在Java中是一个保留的关键字,可以声明成员变量、方法、类以及本地变量。一旦你将引用声明作final,你将不能改变这个引用了,编译器会检查代码,如果你试图将变量再次初始化的话,编译器会报编译错误。final变量:凡是对成员变量或者本地变量(在方法中的或者代码块中的变量称为本地变量)声明为final的都叫作final变量。final变量经常和static关键字一起使用,作为常量。...
2019-09-16 13:54:52 188
原创 python3.7安装pycrypto
首先直接打开cmd,注意不是打开python,也不用切换到python命令行直接输入pip3 install pycryptodome我这里安装过了,所以提示我已经安装过,如果未安装则提示安装成功然后找到你的python包的安装目录,也就是上面我们提示的c:\users\杨**\appdata\local\programs\python\python37\lib\sit...
2019-06-17 13:44:28 25600 13
原创 Linux 修改用户名(同时修改用户组名和家目录)
有时候,由于某些原因,我们可能会需要重命名用户名。我们可以很容易地修改用户名以及对应的家目录和 UID1.修改用户名我们使用 usermod 来修改用户名,语法为:usermod -l new_username old_username该命令相当于做了两件事: 将/etc/passwd下的用户名栏从kevin修改为xuenixiang,其他部分不变 将/etc...
2019-04-03 17:49:25 9750
原创 VS2017编译在XP环境下运行的程序
按照以下步骤跟着设置,就可以在xp完美运行如果VS2017生成的程序在xp系统提示缺少VCRUNTIME140D.dll,这是因为程序采用了动态编译,只要进行静态编译即可解决如下图所示,使用多线程MT就可以解决这个问题。但是问题又来了,VS2017以MT方式链接编译出来的exe还是没法在xp下正常运行,这是因为PE文件中的主系统版本号,不选子系统的情况下默认是6,也就是win7...
2019-04-01 16:33:42 5872 2
原创 [看雪CTF]2019晋级赛Q1第一题流浪者
一直在忙,晚上抽空打开题目,看到大佬们300多秒就解出来了,我只能写个详细点的wp来混存在感了。首先查壳,VC程序,没壳直接导入IDA定位到关键算法部分通过F5可以看到伪C代码,主要讲的是我们输入的假码如果在0-9之间,就把对应的ASCII减0x30,假码如果在a-z之间,就把对应的ASCII减0x57,假码如果在A-Z之间,就把对应的ASCII减0x1D大佬看到这里就...
2019-03-27 15:41:46 667
原创 sublime text3汉化教程
今天突然想到好像还有一个强大的编译器sublime text 3可是这个是外国的编译器,不过各位不用担心这个编译器,已经支持中文编译了:下面就是我关于汉化为中文方面的一些了解以及汉化方式(由于我的编译器,今天不知道出现什么问题了,不可以使用一些命令,所以大部分的内容还是以文字的方式呈现给你们的,关于这一点,我让各位失望了)1:启动并进入sublime主界面;刚安装的时候是没有"pac...
2019-03-22 16:13:26 2455
原创 第八十九课.Object-2
1.为什么equals()方法要重写?判断两个对象在逻辑上是否相等,如根据类的成员变量来判断两个类的实例是否相等,而继承Object中的equals方法只能判断两个引用变量是否是同一个对象。这样我们往往需要重写equals()方法。我们向一个没有重复对象的集合中添加元素时,集合中存放的往往是对象,我们需要先判断集合中是否存在已知对象,这样就必须重写equals方法。重写equals方...
2019-03-17 22:09:01 198
原创 第八十八课.Object-1
Object 类位于 java.lang 包中,是所有 Java 类的祖先,Java 中的每个类都由它扩展而来。定义Java类时如果没有显示的指明父类,那么就默认继承了 Object 类。在Java中,只有基本类型不是对象,例如数值、字符和布尔型的值都不是对象,所有的数组类型,不管是对象数组还是基本类型数组都是继承自 Object 类。Object 类定义了一些有用的方法,由于是根类,这些方法在其...
2019-03-17 16:57:03 237
原创 第八十七课.super和this的使用总结
上3节课说过super()可以显示调用父类构造方法,这节课的this()是可以显式调用本类的构造方法。super()和this ()不能共存,否则编译时会报异常。Constructor call must be the first statement in a constructor换句话说就是super()和this ()都必须在构造方法的第一行。this(有参数/无参数) 用于调...
2019-03-13 16:40:17 192
原创 第八十六课.super关键字-3
子类访问父类成员访问父类的方法 super.print(); 访问父类属性 super.name; 访问父类构造方法 super();注意:访问父类构造方法时,super()只能在子类的构造方法中,而且必须在子类构造方法有效代码的第一行...
2019-03-13 16:19:17 142
原创 第八十五课.super关键字-2
1. 父类有无参构造方法,子类才可以写无参构造方法;父类有含参构造方法,子类才可以写含参构造方法2. 构造方法不能被继承、重写3. 当调用无参构造方法时,先调用父类无参构造方法,然后调用子类无参构造方法;当调用含参构造方法时,先调用父类含参构造方法,然后调用子类含参构造方法。注意:子类不显式调用父类的构造方法时,编译器会默认调用父类的无参构造方法非继承关系中的初始化顺序1...
2019-03-13 16:15:26 159
原创 第八十四课.super关键字-1
在JAVA类中使用super来引用父类的成分,用this来引用当前对象,如果一个类从另外一个类继承,我们new这个子类的实例对象的时候,这个子类对象里面会有一个父类对象。怎么去引用里面的父类对象呢?使用super来引用,this指的是当前对象的引用,super是当前对象里面的父对象的引用。例:调用父类的getAge()package com.xuenixiang.web;p...
2019-03-13 09:01:32 202
原创 第八十三课.关于方法重写访问修饰符的限制
重写也叫覆写,修饰符、返回类型、参数就是要和父类一摸一样才叫覆写,意思是说各个地方都需要完美的盖住,在面向接口编程中,重写是子类有自己的逻辑要实现,同时又不破坏已写好程序逻辑的好方法。JAVA中四种访问权限 private<default<protected<public,如果子去重写父的方法,方法的权限默认是和父一样的,但也可以改,但只能加大权限,不能缩小权限,比如父是prot...
2019-03-13 07:53:47 1112
原创 第八十二课.访问修饰符-2
访问级别 访问控制修饰符 同类 同包不同类(不含子类) 同包子类 不同包不同类 (不含子类) 不同包子类 公开 public √ √ √ ...
2019-03-10 21:34:30 140
原创 第八十二课.访问修饰符-1
Java中的访问修饰符:Java面向对象的基本思想之一是封装细节并且公开接口。Java语言采用访问控制修饰符来控制类及类的方法和变量的访问权限,从而向使用者暴露接口,但隐藏实现细节。访问控制分为四种级别: (1)public: 用public修饰的类、类属变量及方法,包内及包外的任何类(包括子类和普通类)均可以访问; (2)protected: 用protected修饰的类、类属变...
2019-03-10 21:33:38 116
原创 第八十课.方法重写
重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写!重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。方法的重写规则 参数列表必须完全与被重写方法的相同; 返回类型必须完全与被重写方法的返回类型相同; 访问权限不能比父类中被重写的方法的访问权限更低。例如:如果父...
2019-03-10 20:06:44 178
原创 第七十九课.复习方法重载
重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。最常用的地方就是构造器的重载。重载规则:被重载的方法必须改变参数列表(参数个数或类型不一样);被重载的方法可以改变返回类型;被重载的方法可以改变访问修饰符;被重载的方法可以声明新的或更广的检查异常;方法能够在同一个类中或...
2019-03-08 08:58:13 141
原创 第七十八课.继承的注意事项
1、对于一个引用类型的变量,java编译器按照它声明的类型来进行编译。比如;parent p=new child();此时p在编译时这p变量被人为只有parent的方法和变量,虽然它引用的是一个子类的对象。2、子类与父类是即是原则,子类即父类。所有能应用父类的地方,都能换成子类,但反过来是不成立的。所以,一个类的实例包括其本身的累的实例,也包括其实子类或间接子类的实例。3、第一条说道是在...
2019-03-07 20:21:10 168
原创 第七十六课.代码继承的实现-1
上节课讲了父类和子类,这节课直接拿代码举例子父类代码:package com.xuenixiang.web;public class JiChengFuLei { private String name; private String address; public String getName() ...
2019-03-06 09:29:29 159
原创 第七十五课.什么是继承?
Java继承是面向对象的最显著的一个特征。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。Java继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。这种技术使得复用以前的代码非常容易,能够大大缩短开发周期,降低开发费用。比如可以分隔符先定义一个类叫车,车有以下属性:车体大小,...
2019-03-06 08:45:46 191
原创 第七十四课.static关键字-3
总结实例变量和类变量的区别:1,存放位置。 类变量随着类的加载而存在于方法区中。 实例变量随着对象的建立而存在于堆内存中。2,生命周期: 类变量生命周期最长,随着类的消失而消失。 实例变量生命周期随着对象的消失而消失。静态使用注意事项:1,静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法...
2019-03-05 22:24:48 276
原创 第七十三课.static关键字-2
用public修饰的static成员变量和成员方法本质是全局变量和全局方法,当声明它类的对象市,不生成static变量的副本,而是类的所有实例共享同一个static变量。static变量前可以有private修饰,表示这个变量可以在类的静态代码块中,或者类的其他静态成员方法中使用(当然也可以在非静态成员方法中使用--废话),但是不能在其他类中通过类名来直接引用,这一点很重要。实际上你需要搞明...
2019-03-05 21:32:11 117
原创 第七十二课.static关键字-1
静态:static用法:是一个修饰符,用于修饰成员(成员变量,成员函数), 当成员被静态修饰后,就多了一个调用方式,除了可以被对象调用外,还可以直接被类名调:类名.静态成员 类名.静态成员存在:方法区,共享区,数据区(非堆内存、栈内存的另一个存储区),Static 块仅在该类被加载时执行一次。static特点:1,随着类的加载而加载,也就是说静态会随着类的消失...
2019-03-05 20:01:55 198
转载 第七十一课.导入包-2
这里总结一下上节课包的使用包:可以将编译的class文件放入到指定的包中。Java中的包:相当于电脑的文件夹。定义包:package 关键字定义包不同的包中类与类之间的访问注意点: 1.类需要用public 来修饰,公开的。 2.被访问的类要先编译出来。 3.在其他类中使用其他类,需要用到类的全名。(这个方法太麻烦,于是就有了更好的方法导包)...
2019-03-04 20:53:33 153
原创 第七十课.导入包-1
Package是打包的意思,先把当前类打包Import是导入的意思,要想用某个包里的某个类,必须要先导入这个包才能用里面的类,否则使用类就会报错如果要使用的类比较多,可以通过*来导入这个包的所有类如果有两个不同包中的类的名字一样,而且这两个包都被导入了,这时候如果用到类的话eclipse会怎么办呢?eclipse会优先调用有具体指向的包中的类,如下图所示,eclipse调用了导...
2019-03-04 20:48:59 170
原创 第六十九课.创建包
首先说一下Java的包,包可以拿windows的文件夹来比喻,相同的包中,不能有两个一样的类名,就像文件夹里不能有两个相同名字的文件一样(文件类型相同的情况下),不同的包可以有相同的类名(就像不同的文件夹可以有一样名字的文件一样),不同包之间的类文件可以相互移动,如下图:我把FengZhuang.java移动到别的包中,会弹出这个提示这个提示就是告诉你要更改原来文件的引用项,引用项...
2019-03-04 19:59:40 202
原创 第六十七课.代码封装的实现-3
根据上节课的讲解,我们这节课先解决一个疑问有人问,如果一个类有几百个属性,是不是要手动写几百个get和set???为了解决这个问题,eclipse提供了一个非常方便的功能这样就可以一键生成getter和setter了,非常方便 下面改进上节课的源码,实现对网站年龄合法性的判断,实现构造函数和封装之间的配合例:package com.xuenixiang.w...
2019-02-25 01:16:37 175
原创 第六十七课.代码封装的实现-2
get和set就是java中的封装技术。首先我们需要知道,一旦一个变量被“private”私有化了,那么在其他类文件就不能引用(使用)它。使用“private”是把被使用的变量保护起来,使别人不知道这个变量的名称是什么,有保护的作用。而set和get就是在和“private”私有化的变量在同一个类文件中,set和get是“public”共有的,也就是说这两个方法是可以被在其他类文件中使用的。s...
2019-02-25 00:40:35 217
原创 第六十五课.什么是封装
概念:封装(Encapsulation)是面向对象方法的重要原则,就是把对象的属性和操作(或服务)结合为一个独立的整体,并尽可能隐藏对象的内部实现细节。封装是把过程和数据包围起来,对数据的访问只能通过已定义的接口。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。封装是一种信息隐藏技术,在java中通过关键字private...
2019-02-24 20:54:27 1063
原创 第六十四课.this关键字
this 关键字是 Java 常用的关键字,可用于任何实例方法内指向当前对象,也可指向对其调用当前方法的对象,或者在需要当前类型对象引用时使用。This主要有三种用途1.区分成员变量和局部变量2.代表当前对象3.构造方法与构造方法之间的调用 例:区分成员变量和局部变量 package com.xuenixiang.web;public class Wan...
2019-02-24 19:12:41 164
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人