ring

KeUserModeCallback用法详解(Ring0调用Ring3代码)

喜欢而已 提交于 2020-02-27 18:13:41
ring0调用ring3早已不是什么新鲜事,除了APC,我们知道还有KeUserModeCallback.其原型如下: 代码: NTSTATUS KeUserModeCallback ( IN ULONG ApiNumber, IN PVOID InputBuffer, IN ULONG InputLength, OUT PVOID *OutputBuffer, IN PULONG OutputLength ); 但是对于这个函数怎么用,很多人还不是很清楚,因为它未文档化,参数意义又比较晦涩,但是我们除了wrk中的源码可以参考,还有一些实例可供调试研究。所以,要搞清楚它的调用过程并不困难,但是需要一些基本的知识,比如系统调用和返回的过程(KiFastCallEntry,KiServiceExit等)。本文尽量不多谈这种过程转换的细节,而把主要注意力集中在传入的参数及调用过程,以灰盒的方式来分析它。 调试的例子是一个俄国佬的Ring0MessageBox,我自己也写过一份(其实就是逆的),放在看雪了,几乎完全一样。代码地址放在文后了,这东西以前发过一次,不过没讲原理. 有兴趣的可以下载回来扔到Vmware里,拿起调试器,一起来Debug~ 一、KeUserModeCallback的基础知识 我们都知道一个普通的系统调用,它的过程大概是这样的(以OpenProcess为例):

104条PCB电路设计制作专业术语

谁说胖子不能爱 提交于 2020-02-26 12:30:07
1、annular="" ring="" 孔环 指绕接通孔壁外平贴在板面上的铜环而言。在内层板上此孔环常以十字桥与外面大地相连,且更常当成线路的端点或过站。在外层板上除了当成线路的过站之外,也可当成零件脚插焊用的焊垫。与此字同义的尚有 Pad(配圈)、 Land (独立点)等。 2、Artwork 底片 在 电路 板工业中,此字常指的是黑白底片而言。至于棕色的“偶氮片”(Diazo Film)则另用 Phototool 以名之。 PCB 所用的底片可分为“原始底片”Master Artwork 以及翻照后的“工作底片”Working Artwork 等。 3、Basic Grid 基本方格 指电路板在设计时,其导体布局定位所着落的纵横格子。早期的格距为 100 mil,目前由于细线密线的盛行,基本格距已再缩小到 50 mil。 4、Blind Via Hole 盲导孔 指复杂的多层板中,部份导通孔因只需某几层之互连,故刻意不完全钻透,若其中有一孔口是连接在外层板的孔环上,这种如杯状死胡同的特殊孔,称之为“盲孔”(Blind Hole)。 5、Block Diagram 电路系统块图 将组装板及所需的各种零组件,在设计图上以正方或长方形的空框加以框出, 且用各种电性符号,对其各框的关系逐一联络,使组成有系统的架构图。 6、Bomb Sight 弹标 原指轰炸机投弹的瞄准幕。PCB

Using LevelDB in a ring/compojure webapp

梦想与她 提交于 2020-01-16 18:06:52
问题 I am am trying to setup LevelDB in a ring/compojure app, and looking for an idiomatic way to to access the opened db descriptor into each request. For example: (defn -main "I don't do a whole lot ... yet." [& args] (println "Opening LevelDB file in db/main") (with-open [main-db (db/open "db/main")] (println "Running server on port 3000") (run-jetty #'web/app {:port 3000}))) How do you access the main-db descriptor into the request handlers? ie.: (defroutes handler (GET "/test" [] (db/put main

Does Ring request {:scheme :https} guarantee a HTTPS connection?

左心房为你撑大大i 提交于 2020-01-16 03:44:11
问题 If the Ring request map key :scheme has value of :https , is it guaranteed that a HTTPS connection has been established and there were no certificate errors? 回答1: This is probably a question that relates to whatever servlet container you're using rather than ring. ring-servlet populates the :scheme key by getting a value from the HttpServletRequest: :scheme (keyword (.getScheme request)) The servlet specification has only this to say about getScheme : Returns the name of the scheme used to

Serving data with Ring and Compojure

不打扰是莪最后的温柔 提交于 2020-01-15 11:55:27
问题 I am configuring and setting up a web application to serve the JSON data http://www.ericrochester.com/clj-data-analysis/data/census-race.json file statically. My dependencies: :dependencies [[org.clojure/clojure "1.5.1"] [org.clojure/clojurescript "0.0-2197"] [ring/ring-core "1.1.7"] [ring/ring-jetty-adapter "1.1.7"] [compojure "1.1.3"] [hiccup "1.0.2"] [lein-cljsbuild "0.2.10"]] As the title says I'm using Ring as a development plugin, i.e. :plugins [[lein-ring "0.8.3"]] The Leiningen

How to convert map to URL query string in Clojure/Compojure/Ring?

醉酒当歌 提交于 2020-01-14 07:23:41
问题 In Clojure / Compojure, how do I convert a map to a URL query string? {:foo 1 :bar 2 :baz 3} to foo=1&bar=2&baz=3 Is there any utility method to do this in compojure? 回答1: Yes, there is a utility for this already that doesn't involve Hiccup or rolling your own string/join/URLEncoder function: user=> (ring.util.codec/form-encode {:foo 1 :bar 2 :baz 3}) "foo=1&bar=2&baz=3" user=> Compojure depends on ring/ring-core, which includes ring.util.codec, so you already have it. 回答2: Something like:

How to convert map to URL query string in Clojure/Compojure/Ring?

风流意气都作罢 提交于 2020-01-14 07:23:09
问题 In Clojure / Compojure, how do I convert a map to a URL query string? {:foo 1 :bar 2 :baz 3} to foo=1&bar=2&baz=3 Is there any utility method to do this in compojure? 回答1: Yes, there is a utility for this already that doesn't involve Hiccup or rolling your own string/join/URLEncoder function: user=> (ring.util.codec/form-encode {:foo 1 :bar 2 :baz 3}) "foo=1&bar=2&baz=3" user=> Compojure depends on ring/ring-core, which includes ring.util.codec, so you already have it. 回答2: Something like:

分布式系统 in 2010s :硬件的进化

夙愿已清 提交于 2020-01-09 10:24:31
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 分布式技术的发展,深刻地改变了我们编程的模式和思考软件的模式。值 2019 岁末,PingCAP 联合 InfoQ 共同策划出品“分布式系统前沿技术 ”专题, 邀请众多技术团队共同参与,一起探索这个古老领域的新生机。本文出自我司 CTO 黄东旭,为「分布式系统 in 2010s」 系列第三篇。 上篇 我们聊了软件构建方式和演化,今天我们来聊聊硬件吧! SSD 普及的深远影响 如果说云的出现是一种商业模式的变化的话,驱动这个商业革命的推手就是最近十年硬件的快速更新。比起 CPU,存储和网络设备的进化速度更加迅速。最近五年,SSD 的价格 (包括 PCIe 接口) 的成本持续下降,批量采购的话已经几乎达到和 HDD 接近的价格。 <center>近 5 年 SSD 成本曲线</center> SSD 的普及,对于存储软件厂商的影响是深远的。 其一,是极大地缓解了 IO 瓶颈。对于数据库厂商来说,可以将更多的精力花在其他事情,而不是优化存储引擎上。最近两年发生了一些更大的变化,NVMe 正在成为主流,我们很早就在 Intel Optane 进行实验和投资,类似这样的非易失内存的技术,正在模糊内存和存储的界限,但是同时对开发者带来挑战也是存在的。举一个简单的例子,对于 Optane 这类的非易失内存

Mybatis使用IN语句查询

柔情痞子 提交于 2020-01-08 19:52:16
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 一、简介 在SQL语法中如果我们想使用in的话直接可以像如下一样使用: select * from HealthCoupon where useType in ( '4' , '3' ) 但是如果在MyBatis中的使用in的话,像如下去做的话,肯定会报错: Map<String, Object> selectByUserId(@Param("useType") String useType) <select id="selectByUserId" resultMap="BaseResultMap" parameterType="java.lang.String"> select * from HealthCoupon where useType in (#{useType,jdbcType=VARCHAR}) </select> 其中useType="2,3";这样的写法,看似很简单,但是MyBatis不支持。。但是MyBatis中提供了foreach语句实现IN查询,foreach语法如下: foreach语句中, collection属性的参数类型可以使:List、数组、map集合 ​ collection: 必须跟mapper.java中@Param标签指定的元素名一样 ​ item:

How can i use a session for both clojure/script

↘锁芯ラ 提交于 2020-01-04 13:10:53
问题 How can i use single session for both clojure and clojurescript. For my login web application Server side i am using clojure and client side clojurescript. And i need a session which is accessible from both client and server. Is that possible? 回答1: The example sente project has a session which is accessible from both client and server. You will probably need to spend some time with it and mould it to your needs. But the example itself shows logging in and then a :uid inside :session , which