首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

PE格式:新建节并插入DLL

--more-->首先老样子,我们先来到PE节表位置处,并仿写一个.hack的节,该节大小为0x1000字节,仿写前我们需要先来计算出.hack的虚拟偏移与实际偏移,先来查询一下当前节表结构,如下:图片接着我们通过公式计算一下...字节,将其填充到绿色位置即可,此外还需要注意节属性必须为E00000E0可读可写属性,如下图:图片使用WinHEX文件末尾添加填充0字节数据,填充长度为4096,我们的文件偏移为0x9E00,并且跳转到...0xF0处将红色的06改为07,并将底部的1e000 + 1000修正为1F000 此时我们的.hack节添加完成,其对应的虚拟偏移为0x0001E000实际偏移为0x00009E00长度都是0x1000...也就是.hack节的开头位置,将其复制这里来,这里的留白位置就是我们需要添加进来的IID数组暂时为空。...,然后9E80里面需要再次指向FOA=9E90也就是指向RVA=0x0001E090,9E90里面存储的是MsgBox 你的导入函数字符串。

27100
您找到你想要的搜索结果了吗?
是的
没有找到

Kotlin】常用的 Kotlin 类 ① ( 嵌套类 | 数据类 | 数据类 copy 函数 | 数据类解构声明 operator fun component1 | 数据类运算符重载 )

B { } } 类 A 调用 B , 可以直接使用 B() 进行调用 ; 外部调用 类 B 时 , 可以使用 A.B() 的形式进行调用 ; Java 内部类有 成员内部类 , 静态嵌套类..., 方法内部类 , 匿名内部类 几种类型 ; Kotlin 嵌套类 , 相当于 Java 的 静态嵌套类 ; 代码示例 : 在下面的代码 , Person 类内部定义 Student 嵌套类...选择 Show Kotlin Bytecode 选项 , Kotlin Bytecode 界面 , 选择 Decompile 选项 , 将 字节码数据 反编译为 Java 代码数据 ,...发现 Kotlin 编译器 为 Student 数据类 自动生成了一个 toString 方法 , 将其数据打印出来 ; 同时还 重写 Student 数据类 的 equals 和 hashCode...编译器在编译时自动数据类添加上了结构声明 ; @NotNull public final String component1() { return this.name;

84220

PE格式:新建节并插入DLL

首先老样子,我们先来到PE节表位置处,并仿写一个.hack的节,该节大小为0x1000字节,仿写前我们需要先来计算出.hack的虚拟偏移与实际偏移,先来查询一下当前节表结构,如下: 接着我们通过公式计算一下...字节,将其填充到绿色位置即可,此外还需要注意节属性必须为E00000E0可读可写属性,如下图: 使用WinHEX文件末尾添加填充0字节数据,填充长度为4096,我们的文件偏移为0x9E00,并且跳转到...0xF0处将红色的06改为07,并将底部的1e000 + 1000修正为1F000 此时我们的.hack节添加完成,其对应的虚拟偏移为0x0001E000实际偏移为0x00009E00长度都是0x1000...也就是.hack节的开头位置,将其复制这里来,这里的留白位置就是我们需要添加进来的IID数组暂时为空。...,然后9E80里面需要再次指向FOA=9E90也就是指向RVA=0x0001E090,9E90里面存储的是MsgBox 你的导入函数字符串。

19410

ASN编码方式详解 转

基本语法规则 ASN.1,符号的定义没有先后次序:只要能够找到该符号的定义即可,而不必关心使用它之前是否被定义过。...标识符,只有类型和模块名字是以大写字母开头的,其它标识符都是以小写字母开头的。...带小数点的小数形式不能在ASN.1直接使用,ASN.1实数实际定义为三个整数:尾数、基数和指数 注释以两个连字符“--”开始,结束于行的结尾或者该行另一个双连字符。...但是定义符号(或者分配符号Assignment)“::=”不能有分隔符,否则不能正确处理。...000 0001后面有一个字节表示真正的长度 1010 1001是表示长度为169) ​ length=1500=>82 05 DC(1000 0010 0000 0101 1101 1100,先看第一个字节

3K30

Kotlin基本类型自动装箱一点问题剖析

问题 Kotlin官方文档介绍基本类型时,给我们说明了在有些情况下会对基本类型自动进行装箱操作。 但是具体是如何进行装箱,以及何时进行装箱缺没有提供详细介绍。...i: Int = 1000 println(i) } 大家提供一点技巧,在看不懂Kotlin如何编译运行的情况下,我们可以先将其反编译成Java字节码,对于Java我们就驾轻就熟啦。...= 1000 println(i) } 看到test1和test2的区别了吗?? test2多了一个 ? val i: Int? = 1000 这个“`?...上面的整形类型的表示方式并没有使用int、double等java的关键字,而是使用了封装类来表示 这是因为Kotlin中一切都是对象(没有如同java的基本类型)。...当我们代码中使用整形数字的时候,Kotlin会自动的将其进行装箱操作 以上就是本文的全部内容,希望对大家的学习有所帮助。

1K10

int(1) 和 int(10) 有什么区别?

数据说话 我们知道mysql int占4个字节,那么对于无符号的int,最大值是2^32-1 = 4294967295,将近40亿,难道用了int(1),就不能达到这个最大值吗?...零填充 一般int后面的数字,配合zerofill一起使用才有效。...| id | +------+ | 0001 | | 0010 | | 0100 | | 1000 | +------+ 4 rows in set (0.00 sec) 通过数据可以发现 int(...而且对于0001这种,底层存储的还是1,只是展示的会补0。 总结 int后面的数字不能表示字段的长度,int(num)一般加上zerofill,才有效果。...zerofill的作用一般可以用在一些编号相关的数字,比如学生的编号 001 002 … 999这种,如果mysql没有零填充的功能,但是你又要格式化输出等长的数字编号时,那么你只能自己处理了。

7910

我都服了,为啥上游接口返回的汉字总是乱码?

他非要认为 ESC 应该定义为 1101 1000,好家伙正好和我定义的二进制数字顺序相反。 那结果肯定不用说了,我把 0001 1011 这串数字给他之后,按照他的编码规则来解,肯定是 &$#!...字符编码:规定了一个字符码计算机如何存储。 需要注意的是,Unicode 只是一个字符集,它规定了每个字符对应的唯一字符码,却没有规定这个字符码计算机怎样存储(也就是它的字符编码格式)。...把 4e00 转换为二进制为 100 1110 0000 0000,二进制位从后向前依次填充到上述格式的x位置(也是从后向前填充)。...可以程序打印这个字符的二进制格式,以及UTF-8编码后的二进制。...一句话表示:字符集定义了字符数字的映射关系,字符编码定义了这个数字如何在计算机中表达(存储)。 对于 ASCII 和 GB 系列,他们既是字符集也是字符编码。GB 兼容 ASCII 码。

1.5K30

1.14 手工插入ShellCode反弹

字节,将其填充到绿色位置即可,如下图: 最后文件末尾,插入1000个0字节填充,以作为我们填充ShellCode的具体位置,1000个0字节的话WinHEX需要填充4096 到此其实还没结束,我们还落下了一个关键的地方...,直接打开WinHEX工具定位0x3A00发现已经全部填充好了。...字节,将其填充到绿色位置即可,此外还需要注意节属性必须为E00000E0可读可写属性,如下图: 使用WinHEX文件末尾添加填充0字节数据,填充长度为4096,我们的文件偏移为0x9E00,并且跳转到...0xF0处将红色的06改为07,并将底部的1e000 + 1000修正为1F000 此时我们的.hack节添加完成,其对应的虚拟偏移为0x0001E000实际偏移为0x00009E00长度都是0x1000...也就是.hack节的开头位置,将其复制这里来,这里的留白位置就是我们需要添加进来的IID数组暂时为空。

17920

1.14 手工插入ShellCode反弹

字节,将其填充到绿色位置即可,如下图:图片最后文件末尾,插入1000个0字节填充,以作为我们填充ShellCode的具体位置,1000个0字节的话WinHEX需要填充4096图片到此其实还没结束,我们还落下了一个关键的地方...,直接打开WinHEX工具定位0x3A00发现已经全部填充好了。...字节,将其填充到绿色位置即可,此外还需要注意节属性必须为E00000E0可读可写属性,如下图:图片使用WinHEX文件末尾添加填充0字节数据,填充长度为4096,我们的文件偏移为0x9E00,并且跳转到...0xF0处将红色的06改为07,并将底部的1e000 + 1000修正为1F000 此时我们的.hack节添加完成,其对应的虚拟偏移为0x0001E000实际偏移为0x00009E00长度都是0x1000...也就是.hack节的开头位置,将其复制这里来,这里的留白位置就是我们需要添加进来的IID数组暂时为空。

19220

String.Format使用方法

代码 i,d 參数 数字值(number) 含义 參数作为一个十进制整数打印。假设给出了精度并且值的位数小于精度位数,前面就用0填充。...代码 % 參数 (无) 含义 取消%转义打印一个%字符,即用%%表示本来的%。 2、 标志 标志 – 含义 值字段做对齐,缺省情况下是右对齐。... 缺省情况下,正号并不会显示。 标志 空格 含义 仅仅用于转换有符号值的代码。当值非负时,这个标志把一个空格加入�它開始的位置。...另外,缀尾的0并不从小数中去除 3、 字段宽度 字段宽度是一个十进制整数,用于指定将出如今结果的最小字符数。假设值的字符数少于字段宽度,就对它进行填充添加�长度。...99) %d – 月份的第几天,十进制数字(范围从 01 31) %D – 和 %m/%d/%y 一样 %e – 月份的第几天,十进制数字,一位的数字前会加上一个空格(范围从 ‘ 1’ ’31

87020

Kotlin Flow 看这一篇 带你入门~

为什么需要Flow 首先我们来回顾下Kotlin我们如何使用挂起函数,我们main方法,调用挂起函数返回一组数据,代码如下所示: suspend fun loadData(): List...1 获取到了2 最后再获取到了3 ,那么这样如果我们仍然返回最后一个结果(其实也不知道)时一并返回数据,会造成资源浪费并且用户体验不好,那么我们如何解决这个问题呢?...: 打印的结果是:1 打印的结果是:2 打印的结果是:3 Process finished with exit code 0 filter操作符 通过filter 我们可以对结果集添加过滤条件,如下所示...那么我们如何指定Flow代码块的上下文呢,我们需要使用flowOn操作符,我们将Flow代码块的代码指定在IO线程,代码如下所示: fun loadData1() = flow { for...buffer操作符 我们Kotlin 协程 看这一篇就够了 中曾了解过,协程可以提升并发请求的效率,而在Flow代码块,每当有一个处理结果 我们就可以收到,但如果处理结果也是耗时操作,我们来看下需要多长时间来处理

1.3K30

你知道 int(1) 和 int(10) 的区别吗?

数据说话 我们知道mysql int占4个字节,那么对于无符号的int,最大值是2^32-1 = 4294967295,将近40亿,难道用了int(1),就不能达到这个最大值吗?...零填充 一般int后面的数字,配合zerofill一起使用才有效。...id   |+------+| 0001 || 0010 || 0100 || 1000 |+------+4 rows in set (0.00 sec) 通过数据可以发现 int(4) + zerofill...而且对于0001这种,底层存储的还是1,只是展示的会补0。 总结 int后面的数字不能表示字段的长度,int(num)一般加上zerofill,才有效果。...zerofill的作用一般可以用在一些编号相关的数字,比如学生的编号 001 002 ... 999这种,如果mysql没有零填充的功能,但是你又要格式化输出等长的数字编号时,那么你只能自己处理了。

46810

Java 基本类型的各种运算,你真的了解了么?

原来是 Java 在做高精度低精度类型转换的过程,丢失了精度。至于精度为什么会丢,为什么打印出来是另外一个值,我们需要先明确一个计算机基础知识。...那就是计算机存储 Java 数字类型时,它在内存的数据是以什么形式存在的? 这就要涉及原码,反码和补码的概念了。 原码 原码是未经更改的码。它由最左边的符号位和二进制数构成。...比如数字 6 8 位计算机中原码的表示就是:0000 0110。它的优点就是简单直观,可以直接表示数,所以你看到程序打印的值都是原码,无非是我们这里做了下二进制十进制的转换。...比如数字6 8 位计算机反码就是它的原码:0000 0110。数字(-6)计算机反码就是:1111 1001。...int 类型的 129 三码一致,都为:0000 0000 0000 0000 0000 0000 1000 0001。计算机存的是补码。

70620

第3章 Kotlin 可空类型与类型系统第3章 Kotlin 可空类型与类型系统

引用数据型在被创建时,首先在栈上其引用(句柄)分配一块内存,而对象的具体信息存储堆内存上,然后由栈上面的引用指向堆对象的地址。...对于Kotlin数字类型而言,不可空类型与Java的原始的数字类型对应。...Double Java,从基本数字类型引用数字类型的转换就是典型的装箱操作,例如int转为Integer。倒过来,从Integer转为 int 就是拆箱操作。...同理,Kotlin中非空数字类型Int 可空数字类型Int? 需要进行装箱操作。 同时,非空的Int类型会被编译器自动拆箱成基本数据类型 int , 存储的时候也会存到栈空间。...类型 Java,void不能是变量的类型。也不能被当做值打印输出。但是,Java中有个包装类Void是 void 的自动装箱类型。

2K20

PE格式:手工实现IAT导入表注入劫持

图片添加新节并插入DLL解决的办法是自己新建一个节,并设置好属性,先来仿写一个.hack节,我们 .rsrc 后面直接添加一个新的。...图片在文件末尾,插入1000个0字节填充图片最后修正镜像大小,绿色节区数目加1 6改7,蓝色镜像大小加1000,蓝色改为 0001F000,改完保存。...图片将单元填充好图片表关系如下,与微软结构定义相同。图片关系如图。图片添加成功了。图片反写也可识别,OriginalFirstThunk 和 FirstThunk 一致。...图片图片重定位表的解析(拓展)重定位表PE是.reloc,通常情况下EXE可执行文件映射内存时会独占虚拟空间,所以EXE时不需要重定位信息的,只有DLL才会需要,因为DLL内存不固定,很可能一个DLL...被注入多个进程,此时就需要对DLL的数据进行重定位,以确保特定函数还能够被调用到。

60900

PE格式:手工实现IAT导入表注入劫持

添加新节并插入DLL 解决的办法是自己新建一个节,并设置好属性,先来仿写一个.hack节,我们 .rsrc 后面直接添加一个新的。...文件末尾,插入1000个0字节填充 最后修正镜像大小,绿色节区数目加1 6改7,蓝色镜像大小加1000,蓝色改为 0001F000,改完保存。...相对RVA: 0x0001E0A0 导出函数名称:文件偏移:9EB4 相对RVA: 0x0001E0B4 接着将这些数据填充到指定的位置。...将单元填充好 表关系如下,与微软结构定义相同。 关系如图。 添加成功了。 反写也可识别,OriginalFirstThunk 和 FirstThunk 一致。...重定位表的解析(拓展) 重定位表PE是.reloc,通常情况下EXE可执行文件映射内存时会独占虚拟空间,所以EXE时不需要重定位信息的,只有DLL才会需要,因为DLL内存不固定,很可能一个DLL被注入多个进程

47010
领券