最近在使用IDA和X64dgb调试Windows可执行程序时,老是失败,严重怀疑其使用了反调试技术。因此学习一下Windows程序反调试技术,以期望能解决Windows可执行程序动态调试失败的问题。
静态反调试技术
进程状态检测
调试环境检测
动态反调试技术
时钟检测
异常处理
0XCC探测
硬件断点检测
自调试
单步检测
参考链接
- Windows下反(反)调试技术汇总,by topsec.
最近在使用IDA和X64dgb调试Windows可执行程序时,老是失败,严重怀疑其使用了反调试技术。因此学习一下Windows程序反调试技术,以期望能解决Windows可执行程序动态调试失败的问题。
最近获得一个Matlab高版本的项目代码,其文本文件时utf8编码格式,而我的Matlab版本比较低,只支持gbk编码格式,于是采用Python批量转换文本编码格式。代码如下:
1 | import os,sys |
运行时采用如下命令:
1 | python -m venv env |
需要从安卓系统中已安装的APP中提取出APP的安装包,因此研究了以下。
https://dl.google.com/android/repository/platform-tools-latest-windows.zip
提取Apk的步骤如下:
广播式自动相关监视(英语:Automatic dependent surveillance – broadcast,缩写ADS–B)是一种飞机监视技术,飞机通过卫星导航系统确定其位置,并进行定期广播,使其可被追踪。空中交通管制地面站可以接收这些信息并作为二次雷达的一个替代品,从而不需要从地面发送问询信号。其他飞机也可接收这些信息以提供姿态感知和进行自主规避。
请参考以下链接:
Virtual Radar Server 是一个运行本地 Web 服务器的开源 .NET 应用程序。
使用WireShark分析私有网络协议的难度很高,具体方法可以参考以下链接:
请参考以下链接:
注意事项:
1 | local t = tree:add( proto_foo, buf() ) |
wireshark以pcap格式保存抓取的流量。pcap的具体格式请参考Wireshark文件pcap的格式详细解析有实例(Global Header、Packet Header)
可使用tcpreplay、scap、xcap、netassisnt等工具回放pcap文件。
陈浩大神关于绩效考核的观点我很认同,可惜大神已仙逝,无缘一见。以下是他的主要观点:
1)制定目标和绩效,目的不是用来考核人的,而用来改善提高组织和人员业绩和效率的。
2)人是复杂的,人是有状态波动的,任何时候都不应该轻易否定人,绩效考核应该考核的是事情,而不是人。
OKR – Objectives, Key Result
KPI – Key Performance Indicator
绩效分应该打给项目,打给产品,打给部门,打给代码,而不是打给人。
OKR 三大特性:0)由员工提出,1)以目标为导向。2)全员共享。
KPI 最大的问题就是用 OKR 里的 Key Results 拿来当目标,从而导致员工只知道要做什么,不知道为什么,不知道为什么,不能理解目标,工作也就成了实实在在的应付!
KPI本身是一种被动的、后置的考察,在工作完成之后考察员工的行为是否符合标准。因此,员工对于公司的目标漠不关心,只关心自己的KPI,因为这才是自己的最大的利益,为了达到KPI,有的员工开始不思考,并使用一些简单粗暴的玩法,其实这样既害了公司,也害了自己。自己的成长和进步也因为强大的 KPI 而抛在了脑后。
当然,KPI 绩效考核一般来说,不一定会毁掉公司的,相反,对于喜欢使用蛮力的劳动密集型的公司来说,可能还有所帮助,然而,KPI毁掉的一定是团队的文化和团队的挑战精神,以及创新和对事业的热情,甚至会让其中的人失去应有的正常的判断力(分不清充分和必要条件,分不清很多事的因果关系)。
在Vuejs项目中封装echarts的主要目的是简化echart的使用难度,使之不再需要编写复杂的options,只需传递需要绘制的数据即可。
最近研究一个C#开源项目,发现在离线的情况下无法顺利编译链接,其原因是缺乏NuGet安装的程序集。因此研究一下NuGet打包和离线安装的方法。
NuGet是一个自由开源软件包管理系统。用于Microsoft开发平台。以前称NuPack。 2010年首次发布。已经进化为一个庞大的工具与服务生态系统。
进入Nuget官网:https://www.nuget.org/,
搜索框里搜索需要的安装包,例如MaterialDesignThemes,一个主题包,点击自己所需的安装包。
最近处理的几个项目都是用Java语言编写的,学习一下。
Filter可认为是Servle的一种“加强版”,主要用于对用户请求request进行预处理,也可以对Response进行后处理,是个典型的处理链。使用Filter的完整流程是:Filter对用户请求进行预处理,接着将请求HttpServletRequest交给Servlet进行处理并生成响应,最后Filter再对服务器响应HttpServletResponse进行后处理。Filter与Servlet具有完全相同的生命周期,且Filter也可以通过
换种说法,Servlet里有request和response两个对象,Filter能够在一个request到达Servlet之前预处理request,也可以在离开Servlet时处理response,Filter其实是一个Servlet链。
以下是Filter的一些常见应用场合:
Servlet通常称为服务器端小程序,是运行在服务器端的程序,用于处理及响应客户的请求。Servlet是个特殊的java类,继承于HttpServlet。客户端通常只有GET和POST两种请求方式,Servlet为了响应则两种请求,必须重写doGet()和doPost()方法。
JavaBeans是Java中一种特殊的类,可以将多个对象封装到一个对象(bean)中。特点是可序列化,提供无参构造器,提供getter方法和setter方法访问对象的属性。名称中的“Bean”是用于Java的可重用软件组件的惯用叫法。
总的来说,web.xml的加载顺序是:
-> -> -> 。其中,如果web.xml中出现了相同的元素,则按照在配置文件中出现的先后顺序来加载。
对于某类元素而言,与它们出现的顺序是有关的。以
为例,web.xml中当然可以定义多个 ,与 相关的一个元素是 ,注意,对于拥有相同 的 和 元素而言, 必须出现在 之后,否则当解析到 时,它所对应的 还未定义。web容器启动初始化每个 时,按照 出现的顺序来初始化的,当请求资源匹配多个 时, 拦截资源是按照 元素出现的顺序来依次调用doFilter()方法的。 同 类似,此处不再赘述。 Servlet里有request和response两个对象,Filter能够在一个request到达Servlet之前预处理request,也可以在离开Servlet时处理response,Filter其实是一个Servlet链。
请参考Struct2 基础介绍 。
请参考Spring MVC 解析之 DispatcherServlet。
Flow 是 JavaScript 代码的静态类型检查器。它做了很多工作来提高你的工作效率。使您编码更快、更智能、更自信,并且规模更大。
Flow 通过静态类型注解检查你的代码是否有错误。这些 类型允许您告诉 Flow 您希望您的代码如何工作,Flow 将确保它确实以这种方式工作。
Vue2的源代码就使用了Flow进行静态类型检查。下面介绍在Vue2项目中安装配置使用Flow的方法。
1 | npm install --save-dev @babel/core @babel/cli @babel/preset-flow |
接下来,您需要在项目的根目录下创建一个文件,即.babelrc, 并将”@babel/preset-flow”配置在您的”presets”.
1 | { "presets": ["@babel/preset-flow"] } |
1 | npm install --save-dev flow-bin |
安装完成后在package.json中加入下面的脚本:
1 | "scripts": { |
首先生成flow配置文件.flowconfig:
1 | .\node_modules\.bin\flow init |
新建一个文件index.js:
1 | // @flow |
// @flow或者 /* @flow */告诉flow检查这个文件
输入npm run flow 执行类型检查
注:在vue单文件组件使用flow需要额外配置
注:项目路径不能存在中文