目录 修改记事本PE结构弹计算器Shellcode 0x00 前言 0x01 添加新节 修改节数量 节表位置 添加新节表信息 0x02 添加弹计算器Shellcode 修改代码 0x03 修改入口点 计算跳转OEP偏移 0x04 bug修复 0x05 验证结果 修改记事本PE结构弹计算器Shellcode 0x00 前言 在上一篇文章中介绍了PE节表的分析,这篇文章主要是对其进行手动实验来加深对节表的理解,并且这里用一个记事本的例子做演示,我们用Winhex软件通过修改.添加十六进制数据让记事本…
0 前言 此篇文章想写如何通过工具手查导出表.PE文件代码编程过程中的原理.文笔不是很好,内容也是查阅了很多的资料后整合出来的.希望借此加深对PE文件格式的理解,也希望可以对看雪论坛有所贡献.因为了解PE文件格式知识点对于逆向破解还是病毒分析都是很重要的,且基于对PE文件格式的深入理解还可以延伸出更多非常有意思的攻防思维. 1 导出表查询工具 1 ) dumpbin VS自带的工具,有很多的功能.但用来查询程序的导出表也非常方便,使用例子如下: dumpbin.exe /EXPORTS D:\P…
载入程序,按 Alt+M 查看内存空间 双击进入程序的 PE 头 这些为 DOS 环境下才会运行的 这个执行 PE 的地址,PE 结构的偏移地址为 C0 找到这个地址 以 PE 开头 SizeOfCode 为代码段的大小 SizeOfInitializedData 为所有含已初始化数据的块的大小 这两个值明显太大了,可能被恶意修改过了,可以把他们修改一下 右键 -> 二进制 -> 编辑,快捷键为 Ctrl+E 或者右键 -> 修改整数 SizeOfCode 可能为 400,SizeOfI…
正在学PE结构...感谢个位大哥的文章和资料...这里先说声谢谢 一般高级编译器都是编译好的PE头部,例如MASM,TASM等一直都说NASM,FASM是低级编译器.可以自定义结构但是苦于无人发布相关文章说明..我这里就简单的用NASM写一下由于刚学PE结构许多东西都不太懂希望个位大侠指点如何打造一个迷你的PE结构..我暂只只能作到617字节下面随着学习的深入...还有更迷你的PE出现... 代码可以直接编译..编译参数:nasmw -fbin MsgBoxA.asm -o MsgBoxA.ex…
PE格式是 Windows下最常用的可执行文件格式,理解PE文件格式不仅可以了解操作系统的加载流程,还可以更好的理解操作系统对进程和内存相关的管理知识,而有些技术必须建立在了解PE文件格式的基础上,如文件加密与解密,病毒分析,外挂技术等,在PE文件中我们最需要关注,PE结构,导入表,导出表,重定位表,下面将具体介绍PE的关键结构,并使用C语言编程获取到这些结构数据. 参考文献: [琢石成器 Win32汇编语言程序设计 - 罗云彬] 整理学习笔记,精简内容,翻译汇编代码C语言化 在任何一款操作系统…
汇编语言(assembly language)是一种用于电子计算机.微处理器.微控制器或其他可编程器件的低级语言,亦称为符号语言.在汇编语言中,用助记符(Mnemonics)代替机器指令的操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址.在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令,普遍地说,特定的汇编语言和特定的机器语言指令集是相互对应的,不同平台之间不可直接移植. PE格式是Windows系统下最常用的可执行文件格式,有些应用必须…
写在前面   本笔记是由本人独自整理出来的,图片来源于网络.本人非计算机专业,可能对本教程涉及的事物没有了解的足够深入,如有错误,欢迎批评指正. 如有好的建议,欢迎反馈.码字不易,如果本篇文章有帮助你的,如有闲钱,可以打赏支持我的创作.如想转载,请把我的转载信息附在文章后面,并声明我的个人信息和本人博客地址即可,但必须事先通知我. 在winnt.h头文件中有定义,32位win程序的PE结构和64位win程序的有所不同,但区别不大. ️ PE文件的整体结构 ️ PE文件的两种状态 红色表示更多的空…
羽夏壳世界之 PE 结构(上),介绍难度较低的基本 PE 相关结构体.…
Mongodb:修改文档结构后出现错误:Element '***' does not match any field or property of class ***. Mongodb是一种面向文档的数据库,即不再有"行"的概念,取而代之的是更为灵活的"文档"(doucument)模型.在开发中,经常需要变更文档字段,比如添加一个字段等. 这时必须保证每个文档中的字段在实体字段中都有,即实体字段多于各个文档字段(每个文档的字段集合都是实体字段的子集).这样便可保证查…
在线批量修改mysql中表结构 1.获取要修改的表的表名称登录mysql库,查询出所有表 show tables; 将需要修改表结构的表名称存放到b.txt文件中2.执行修改修改表引擎为InnoDB for i in `cat b.txt`;do /usr/local/percona-toolkit/bin/pt-online-schema-change --user=root --password=123456 --host=localhost --charset=utf8 --alter="…
第一次学习PE结构,也不知道有没有更好的办法. 1.AddressOfEntryPoint 这个成员在OptionalHeader里面,OptionalHeader的类型是一个IMAGE_OPTIONAL_HEADER32结构.该结构总共有31个成员,占的大小为224字节.成员7就是AddressOfEntryPoint.AddressOfEntryPoint占4个字节.它表示的是代码入口的RVA地址.也就是说,把一个文件加载到内存的时候,基地址加上AddressOfEntryPoint就是我们…
乍一看LordPE一个小工具一般般,真的动手做起来才知道技术含量高的很. 当前只是获取到PE结构并打印,仅此而已. PE.h #pragma once #include <stdio.h> #include <stdarg.h> #include <Windows.h> #include <time.h> HANDLE m_hFile = NULL; // 文件句柄 HANDLE m_hMap = NULL; // 文件映射句柄 LPVOID m_lpBas…
在开发过程中,python的flask框架使用sqlalmysql连接mysql数据库. 在程序连接数据量过程中,不要修改数据表的结构.比如在连接状态中使用下面的软件修改数据表结构,这个软件立即就会卡死,这个使用停止flask的连接,就可以从卡死状态中恢复过来,正常执行下去. 如图,通过Dump SQL File可以把数据库的表结构和数据拷贝下来,或者只要表结构.然后通过Execute SQL File,把这些数据表及里面的数据导入到另一个数据库…
percona-toolkit中pt-online-schema-change工具安装和使用 pt-online-schema-change介绍 使用场景:在线修改大表结构 在线数据库的维护中,总会涉及到研发修改表结构的情况,修改一些小表影响很小,而修改大表时,往往影响业务的正常运转,如表数据量超过500W,1000W,甚至过亿时 在线修改大表的可能影响(1)在线修改大表的表结构执行时间往往不可预估,一般时间较长(2)由于修改表结构是表级锁,因此在修改表结构时,影响表写入操作(3)如果长时间的修…
每一种操作系统它最重要的格式就是它的可执行文件格式, 因为操作系统就是为了支持这些文件而生成的,内核里面有很多机制,也是配合这种文件格式设计的. 换句话说,这种文件格式也是适合操作系统设计的. 比如: PE 它是 windows 下的文件格式,是 MZ 打头的(4D5A)只有两个字节,后面很大一片就是对这个结构体的管理, 比如:声音在什么位置,图像在什么位置,文字在什么位置,在前面这一片都是有记录的, 也就是说,前面开头不只是标志而已,前面这一片是一个结构体.   PE(Portable Exe…
(一)基本概念 PE(Portable Execute)文件是Windows下可执行文件的总称,常见的有DLL,EXE,OCX,SYS等, 事实上,一个文件是否是PE文件与其扩展名无关,PE文件可以是任何扩展名. 那Windows是怎么区分可执行文件和非可执行文件的呢? 我们调用LoadLibrary传递了一个文件名,系统是如何判断这个文件是一个合法的动态库呢? 这就涉及到PE文件结构了.   PE文件的结构一般来说如下图所示:从起始位置开始依次是DOS头,NT头,节表以及具体的节.…
使用场景 在线数据库的维护中,总会涉及到研发修改表结构的情况,修改一些小表影响很小,而修改大表时,往往影响业务的正常运转,如表数据量超过500W,1000W,甚至过亿时 在线修改大表的可能影响 在线修改大表的表结构执行时间往往不可预估,一般时间较长 由于修改表结构是表级锁,因此在修改表结构时,影响表写入操作 如果长时间的修改表结构,中途修改失败,由于修改表结构是一个事务,因此失败后会还原表结构,在这个过程中表都是锁着不可写入 修改大表结构容易导致数据库CPU.IO等性能消耗,使MySQL服务器性…
由于工作需要在詹金斯(genkins)集成环境打包,打包避免不了需要修改版本号,写入版本号最简单的方式通过修改windows rc文件 这就意味着,每次构建新版本前需要修改一次源文件 这个在用詹金斯集成环境打包是不太友好的 因为版本号是由詹金斯自动生成拼接传入的,而打包环境意味着代码已经封闭了不在修改了如果去改的话 就会存在一定的风险.这就需要在编译完成后通过其它工具用命令行方式修改版本号,经网上查找资料发现 ResHacker可以修改版本号,但是资料更多的是关于GUI方式,很少有命令行方式的资…
1 基本概念 下表描述了贯穿于本文中的一些概念: 名称 描述 地址 是“虚拟地址”而不是“物理地址”.为什么不是“物理地址”呢?因为数据在内存的位置经常在变,这样可以节省内存开支.避开错误的内存位置等的优势.同时用户并不需要知道具体的“真实地址”,因为系统自己会为程序准备好内存空间的(只要内存足够大) 镜像文件 包含以EXE文件为代表的“可执行文件”.以DLL文件为代表的“动态链接库”.为什么用“镜像”?这是因为他们常常被直接“复制”到内存,有“镜像”的某种意思.看来西方人挺有想象力的哦^0^…
提示:前面加*为必须背下来的 DOS头: typedef struct _IMAGE_DOS_HEADER { // DOS .EXE header WORD e_magic; //* Magic number WORD e_cblp; // Bytes on last page of file WORD e_cp; // Pages in file WORD e_crlc; // Relocations WORD e_cparhdr; // Size of header in paragrap…
  前  言 JRedu 给大家介绍一点JS函数的练习题希望初学者多做一些练习能够更好的掌握JS的函数,以及能够提升大家的逻辑思维.(我也是个渣渣希望路过的大神多提建议或意见) 希望能够对大家有所帮助 练习一① 使用JS函数实现一个计算器.(具体样式如下:) 要求:先点击运算符号再弹出需要输入运算数值的alert窗口进行计算. 好啦接下来大家尝试着做一下吧.很简单对不对! 希望能够大家做出比下面更好的方法: <script type="text/javascript"> f…
什么是重定位: 重定位就是你本来这个程序理论上要占据这个地址,但是由于某种原因,这个地址现在不能让你占用,你必须转移到别的地址,这就需要基址重定位.你可能会问,不是说过每个进程都有自己独立的虚拟地址空间吗?既然都是自己的,怎么会被占据呢?对于EXE应用程序来说,是这样的.但是动态链接库就不一样了,我们说过动态链接库都是寄居在别的应用程序的空间的,所以出现要载入的基地址被应用程序占据了或者被其它的DLL占据了,也是很正常的,这时它就不得不进行重定位了. 哪些数据需要重定位: :00401000 5…
毕竟这个框架是外国人开发的,对于我们国人来说还是有些地方并不合适,就好比如注册时需要填写名字.姓氏一样,今天要说的就是如何去掉这2个字段. 先看如下修改完成的效果图 User表结构修改 修改User类,添加如下代码: 文件路径:D:\abp version\aspnet-zero-3.4.0\aspnet-zero-3.4.0\src\MyCompanyName.AbpZeroTemplate.Core\Authorization\Users\User.cs //Can add applicat…
需要迁移一个开源工程的一部分内容到自己工程,迁移对方的工程到自己工程之后,因目录结构配置整理需要,对嵌入的工程目录进行了结构改变,编译后出现: clang: error: no such file or directory: '/Users/username/Desktop/echonest-echoprint-ios-sample-b937c04/Classes/ClassName/clang: error: no such file or directory:' 揪其原因,很明显,因为改变了…
计算PE文件创建时间,需要对时间进行转换,也就是将时间戳转换成特定的格式,或者特定的格式转换成时间戳. pImageFileHeader->TimeDateStamp的值为1487665851 网上找了一下方法,可以用gmtime_s和strftime函数进行转化 gmtime_s函数 gmtime_s可以直接显示文件创建时间,但是年数需要加上1900,月数要加上1,小时要加上8 errno_t gmtime_s( struct tm* _tm, const __time_t* time );…
SQL语句     DLL        数据定义语言         create,drop     DML     数据操纵语言         insert,delete,select,update     DCL        数据控制语言         grant,revoke 使用ALTER TABLE修改表结构 (1)修改表名 ALTER TABLE <表名> RENAME <新表名> mysql> alter table game_account renam…
------------------create table t_video_file_temp( video_id bigint not null comment '视频Id', file_md5 varchar(64) comment '视频md5', file_size bigint comment '视频大小', source_url varchar(500) comment '视频源地址', file_url varchar(500) comment '视频本地地址', status…
http://blog.csdn.net/panderman/article/details/8172968 不知道这算不算一个bug,当你新建一个从数据库生成的edmx时,他能正确的生成所有的tt文件,但是当你从数据库更新表结构时,他不能正确的更新tt文件,以建立Model1.edmx为例,在解决方案中展开Model1.edmx, 右键Model1.Context.tt,然后点击运行自定义工具. 然后再右键Model1.tt,也点击运行自定义工.经过这两步,就会跟据edmx结构正确的生成文件了…
对对象数组逐个修改元素属性时候没有成功,代码如下: for _, configure := range configures { configure.Price = specPriceMap[configure.CarSpecId] } 原因是在修改时候使用内置变量configure ,循环结束时候临时变量的作用域消失,并没有真正的修改元素的属性: 因此需要用到索引来访问数组的元素,通过索引指向元素,具体代码如下: for idx, configure := range configures {…
1.修改表的列名 oracle: ALTER TABLE 表名 RENAME COLUMN 列名 TO 新列名sqlserver:exec sp_rename '[表名].[列名]','[表名].[新列名]'mysql:ALTER TABLE 表名 CHANGE 列名 新列名 列类型…