Windows映像劫持调试程序

简介


“映像劫持”,也被称为“IFEO”(Image File Execution Options),在Windows NT架构的系统里,IFEO的本意是为一些在默认系统环境中运行时可能引发错误的程序执行体提供特殊的环境设定。当一个可执行程序位于IFEO的控制中时,它的内存分配则根据该程序的参数来设定,而Windows NT架构的系统能通过这个注册表项使用与可执行程序文件名匹配的项目作为程序载入时的控制依据,最终得以设定一个程序的堆管理机制和一些辅助机制等。出于简化原因,IFEO使用忽略路径的方式来匹配它所要控制的程序文件名,所以程序无论放在哪个路径,只要名字没有变化,它就可以正常运行。

注册表位置:

Debugger参数


它是IFEO里第一个被处理的参数,系统如果发现某个程序文件在IFEO列表中,它就会首先来读取Debugger参数,如果该参数不为空,系统则会把Debugger参数里指定的程序文件名作为用户试图启动的程序执行请求来处理,而仅仅把用户试图启动的程序作为Debugger参数里指定的程序文件名的参数发送过去。

实例操作


1. 在管理员状态下执行regedit.exe,定位到以下注册表项:

2. 在Image File Execution Options下建立一个子键,名为XLUEOPS.exe,不区分大小写。现在确保位于HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File ExecutionOptions\XLUEOPS.exe\,下,建立一个字符串值类型的注册表项,名为Debugger,值为指定的调试器。
3. 再次运行XLUEOPS.exe查看运行情况,可以发现调试器已经启动了。

安装微软Win10更新KB3122947出现80070643错误解决办法

近日微软为Win10用户推送了编号为KB3122947的更新补丁,主要用于解决Win10系统升级后部分隐私设置选项被恢复默认的问题。不过从国内外很多网友的反馈来看,很多用户在安装时出现错误。当补丁下载完成准备安装时出现了0x80070643错误,如果你也遇到了这个问题可参考下面的方法来解决。

当出现该错误时,系统其实已经下载好更新程序,此时你可以使用DISM命令行工具手动部署该更新。

1.首先按Win+X或者右键单击开始按钮,打开“命令提示符(管理员)”;
2.输入下面的命令(复制粘贴)回车即可:

注意:以上命令以64位版本为例,参数packagepath后面的字符串为补丁下载路径。如果你使用的是32位Windows10系统可以打开Download文件夹,通过更新时间来确定文件路径。

参考链接:

解决Gson解析Json时,Json 中Key为Java关键字的问题

最近在一个项目中,服务器使用 json 作为返回信息的格式,为了加快开发速度,我使用 Gson 代替 Java 语言中自带的 JSONObject 来解析 json 格式。

当我正在享受 Gson 给我带来的便利的时候,我遇到问题了。

因为 Gson 在转化 json 字符串到对象的时候,要求类的成员变量的名称必须和 json 中的 key 值相同。但是郁闷的是,在封装一个接口的时候发现,json 字符串中的 key 为 Java 的关键字。

按照 Gson 的约定,就必须编写一个变量名为new的类,但是结果可想而知,编译不通过。

幸好,Google 已经为我们想好了解决办法,只要对该变量添加Field Naming Support就可以了。

到此,就完美地解决了我们遇到的问题。

引用链接 解决Gson解析Json时,Json 中Key为Java关键字的问题

OpenSCAD用户手册/OpenSCAD用户界面

目录


用户界面


视图导航


视图设置


WordPress 5.2.4内嵌CSS

目录


  1. 安装配置自定义插件
  2. 链入外部样式表
  3. 内部样式表
  4. 导入外部样式表
  5. 内嵌样式
  6. 多重样式表的叠加

安装配置自定义插件


需要在当前主题的 functions.php 中添加自定义代码,才能实现在文章中自定义 CSS 样式表,插件内容如下:

添加完成之后,会在文章编辑页面的最下面,出现 CSS 编辑窗口,之后在这个窗口中添加 CSS 会被自动保存。

链入外部样式表


链入外部样式表是把样式表保存为一个样式表文件,然后在页面中link标记链接到这个样式表文件,这个标记必须放到页面的区内,如下:

上面这个例子表示浏览器从mystyle.css文件中以文档格式读出定义的样式表。rel="stylesheet"是指在页面中使用这个外部的样式表。 type="text/css"是指文件的类型是样式表文本。href="mystyle.css"是文件所在的位置。

一个外部样式表文件可以应用于多个页面。当你改变这个样式表文件时,所有页面的样式都随之而改变。在制作大量相同样式页面的网站时,非常有用,不仅减少了重复的工作量,而且有利于以后的修改、编辑,浏览时也减少了重复下载代码。

样式表文件可以用任何文本编辑器(例如:记事本)打开并编辑,一般样式表文件扩展名为.css。内容是定义的样式表,不包含HTML标记,mystyle.css这个文件的内容如下:

(定义水平线的颜色为土黄;段落左边的空白边距为20象素;页面的背景图片为images目录下的back40.gif文件)


内部样式表


内部样式表是把样式表放到页面head区里,这些定义的样式就应用到页面中了,样式表是用style标记插入的,从下例中可以看出style标记的用法:

注意:有些低版本的浏览器不能识别style标记,这意味着低版本的浏览器会忽略style标记里的内容,并把style标记里的内容以文本直接显示到页面上。为了避免这样的情况发生,我们用加HTML注释的方式(<!--注释-->)隐藏内容而不让它显示:


导入外部样式表


导入外部样式表是指在内部样式表的style里导入一个外部样式表,导入时用@import,看下面这个实例:

例中@import "mystyle.css"表示导入mystyle.css样式表,注意使用时外部样式表的路径。方法和链入样式表的方法很相似,但导入外部样式表输入方式更有优势。实质上它相当于存在内部样式表中的。 注意:导入外部样式表必须在样式表的开始部分,在其他内部样式表上面。


内嵌样式


内嵌样式是混合在HTML标记里使用的,用这种方法,可以很简单的对某个元素单独定义样式。内嵌样式的使用是直接将在HTML标记里加入style参数。而style参数的内容就是CSS的属性和值,如下例:

(这个段落颜色为土黄色,左边距为20象素) 在style参数后面的引号里的内容相当于在样式表大括号里的内容。 注意:style参数可以应用于任意BODY内的元素(包括BODY本身),除了BASEFONTPARAMSCRIPT


多重样式表的叠加


上一章里我们已经提到样式表的层叠顺序,这里我们讨论插入样式表的这几种方法的叠加,如果在同一个选择器上使用几个不同的样式表时,这个属性值将会叠加几个样式表,遇到冲突的地方会以最后定义的为准。例如,我们首先链入一个外部样式表,其中定义了h3选择符的colortext-aligfont-size属性:

(标题3的文字颜色为红色;向左对齐;文字尺寸为8号字) 然后在内部样式表里也定义了h3选择符的text-align和font-size属性:

(标题3文字向右对齐;尺寸为20号字) 那么这个页面叠加后的样式就是:

(文字颜色为红色;向右对齐;尺寸为20号字) 字体颜色从外部样式表里保留下来,而对齐方式和字体尺寸都有定义时,按照后定义的优先而依照内部样式表。 注意:依照后定义的优先,所以优先级最高的是内嵌样式,内部样式表高于导入外部样式表,链入的外部样式表和内部样式表之间是最后定义的优先级高。

参考链接


WordPress 让特定的文章使用特定的CSS样式

CSS:position、float

之前写css,一直是把position:absolute当做android的FrameLayout用的,其他类似。

后来看了下面的文章,满面羞愧。

这些基础的东西,还是要了解透彻的,一直不求甚解的搞下去,自己都不知道做的什么,为什么会出现这种错误,希望能从下面的内容中,总结出一个类似于Androidlayout的规则。

关于position看下面的文章就够了

http://blog.csdn.net/chen_zw/article/details/8741365

css属性大全

http://css.doyoe.com/

这里主要记一下看完自己的理解:

文档流

首先需要了解什么是文档流,可以理解为方块布局,从上到下,从左到右的布局方式就是文档流。

1.margin和padding是占用文档流的,也就是说,layout函数一定是这么写的

element.margin + elment.width/height +element.padding = dom真正占用的空间。

position:static很容易理解,完全遵循文档流。

position:relative 有点特殊,本身遵循文档流,但可以在文档流中使用top left bottom right设置偏移,偏移不遵循文档流。需要注意的是,后面的dom会按照relative元素不偏移来排列。layout函数中完全可以把relative按照static先处理,最后在当前位置进行偏移。

注:relative static无父辈时以body为参考;

position:absolute 脱离文档流,使用top left bottom right设置偏移,偏移参照为父辈最近的非static元素(之前一直认为absolute参照window,深刻检讨)。

注:absolute无父辈时以html为参考。

1、body默认有9个px的margin

2、absolute的元素没有设置top、left时,默认是文档流的位置,会造成设置了absolute,看起来没有效果的现象。

position:fixed fixed以window为参考(即不管你怎么scroll,位置都不会变),设置偏移。

float:absolute会屏蔽掉float,其他的可以共存。

float不遵循文档流。

clear:clear是配合float使用的。意思是把dom的哪边给清除掉。

如clear:both,意思是两边都不许浮动。

如果我来写 html的layout,

1.dom tree static,relative的按照文档流布局,relative单独处理下偏移,完全不影响文档流。

fixed很简单粗暴。

2.处理absolute float

absolute屏蔽float

absolute需要寻找父辈非static元素直到html,比较蛋疼。这个webkit在渲染的时候会把absolute的元素单独出来一层。

float是浮动排版,按文档流布局就差不多。

当然,css3还有更多的排版方式,上面几种已经基本够用,如果还要学习的话就是box了。

Android Studio 指定签名证书文件

1.先参照Android Studio中创建keystore生成指定的证书文件。

2.在app/build.gradle文件中增加signingConfigs字段:如下所示:

注意

1.storeFilestorePasswordkeyAliaskeyPassword缺一不可,都必须填写,并且填写正确。

如果没有填写keyAlias,则签名时候会报告Android-APK signing error : Failed to read key from keystore

密码不正确的时候,会报告java.security.UnrecoverableKeyException: Cannot recover key
This exception may result from the fact that you had provided a key password that was different from the keystore password

2.对于Release配置,在buildTypes中必须指定

否则,会出现

3.signingConfigs必须在buildTypes前面声明,否则会出现找不到配置选项的错误。

查看Keystore文件的签名信息/检查APK文件中的签名信息

  • 查看 keystore文件的签名信息

  • 检查APK文件中的签名信息

解压出apk中META-INF目录下的CERT.RSA文件,然后用keytool即可查看签名信息:

  • 比对签名是否一致

验证APK的签名是不是我们给定的签名文件的签名。

1.解压出apk中META-INF目录下的CERT.RSA文件.

2.执行如下命令:

Windows:

Linux:

比较两者输出的MD5字符串,是否一致即可。

Android Studio 1.5使用junit单元测试,以及“Test running startedTest running failed: Instrumentation run failed due to 'java.lang.RuntimeException' Empty test suite”

Android Studio 1.5创建的工程,会生成两个默认的测试目录:test,androidTest,其中,test目录为在本机执行单元测试代码的目录,androidTest为在Android设备上执行单元测试代码的目录。

目录如下图所示:

android_test_directory

对于新建的工程,默认会生成相应的测试代码例子。如下图所示:

android_unit_test_example_file

请注意上图的两个文件图标的差别,一个文件的图标的右上角是两个三角标记,另一个文件的右下角是个时钟的标记。

右击androidTest目录下的ApplicationTest.java,就会出现执行测试用例的菜单。如下图:

android_unit_test_run_test_menu

但是当右击test目录下的ExampleUnitTest.java则没有任何的运行菜单。如下图:

test_menu_no_run_or_debug_menu

那么,如何执行test目录下的ExampleUnitTest.java呢?

操作方法为"View"->"Tool Windows"->"Build Variants",然后,切换Test ArtifactAndroid Instrumentation TestsUnit Tests
如下图:

Build_Variants_Menu

切换Test Artifact

Build_Variants_Window

可以看到,切换完成后,两个文件的图标互换了一下:

UnitTest_File_Icon_Switch

此时右击test目录下的ExampleUnitTest.java则会出现Run 'ExampleUnitTest',Debug 'ExampleUnitTest'的菜单了。

如下图:

ExampleUnitTest_Run_Debug_Menu

至于

这个问题,是由于Android Studio 的BUG,导致的,一般是没有执行上述的切换命令,然后右击test目录下的ExampleUnitTest.java依旧会出现Run 'ExampleUnitTest',Debug 'ExampleUnitTest'的菜单,然后点击后,会让我们选择运行的设备,这个时候,明显是把我们当作可以在设备上运行的测试用例了,因此,找不到是必然的。

应对这个BUG的解决方法,就是清理代码,然后重新加载工程,一般可以解决这个问题了。