- 博客(51)
- 收藏
- 关注
原创 Linux文件系统概述
文件系统特性inode: 记录文件系统的权限和属性数据区块: 实际记录文件内容超级区块: 记录文件系统的整体信息, 包括inode与数据区块的总量, 使用量, 剩余量, 以及文件系统格式等信息inode和数据区块都有号码, 只要有一个文件的inode的号码, 读取inode的信息, 就能得到存储在inode中的数据区块的号码, 然后就可以索引相应数据区块得到实际文件数据了. 利用inode的文件系统称为索引式文件系统(indexed allocation).索引式文件系统对比FAT文件系统, FA
2021-03-31 12:17:41 106 1
原创 vscode打击感插件(
powermode 拓展很带感, 装上感觉写代码很爽…vscode扩展搜powermode安装之后, 左下角搜了很多教程, 搞七搞八的说不清楚, 弄了半天, 发现直接在设置里搜powermode启动即可重启, 开始打游戏~也可以自行设置各种样式, 慢慢摸索就懂了....
2021-03-28 22:29:05 296
原创 Ubuntu16/18.04纯命令行安装vscode
安装curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpgsudo mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpgsudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main" > /etc/ap
2021-03-28 21:53:36 3473 1
原创 Sub-process /usr/bin/dpkg returned an error code (1)
sudo apt 某个包的时候中断了, 然后莫名导致环境配置文件出错以后的apt安装操作都一直报这个错Setting up update-notifier-common (3.168.13) ...Traceback (most recent call last): File "/usr/lib/update-notifier/package-data-downloader", line 24, in <module> import debian.deb822ModuleNo
2021-03-28 20:21:03 1029 1
原创 python list常用操作汇总
生成全0数组n = 100temp = [0 for _ in range(n)]判断是否为空temp = []if temp: print('empty')if not temp: print('not empty')模拟栈temp = []temp.append(num) # 压入栈temp.pop() # 弹出栈temp[-1] # 取最后一个元素模拟队列temp = []temp.append(num) # 加入队列temp.pop(0) # 出队列temp[0
2021-03-28 18:01:44 176
原创 leetcode-最长有效括号
题目给你一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长有效(格式正确且连续)括号子串的长度。示例 1:输入:s = “(()”输出:2解释:最长有效括号子串是 “()”示例 2:输入:s = “)()())”输出:4解释:最长有效括号子串是 “()()”示例 3:输入:s = “”输出:0提示:0 <= s.length <= 3 * 104s[i] 为 ‘(’ 或 ‘)’思路栈模拟执行一遍, 设定一个bool数组(或者整型), 不能匹配的位置设为false
2021-03-28 17:45:18 134
原创 基于密码学的访问控制
背景大数据安全的基础, 就是基于密码学的访问控制. 这种访问控制技术依赖于密钥的安全性, 不需要可信监控机, 传统的基于引用监控机的访问控制不能适应庞大的数据量的需求, 出现难以管理和耗费大量资源的窘境, 因此基于密码学的访问控制技术就是数据时代的必由之路.分类基于密码学的访问控制主要有两大类基于密钥管理的访问控制, 通过确保数据解密密钥只有授权用户持有来实现, 通常依靠可信密钥管理服务器实现. 不过这种方法同可信监控机一样不适用于大数据环境, 但是有一种广播加密技术提供解决方案.基于属性加密的访
2021-03-28 15:19:38 3502 2
原创 基于属性的访问控制模型
Arttribute-Based Access Control (ABAC)基于属性的访问控制, 一种适用开放环境的访问控制技术. 用安全属性来定义授权, 可以有效保护用户身份等隐私信息, 不同属性由不同属性权威定义和维护.三个概念实体: 系统中的主体, 客体, 权限, 环境环境: 访问控制发生的系统环境属性: 描述实体的安全信息, 包括属性名和属性值. 主体, 客体, 权限, 环境都有各自的属性.ABAC架构图AA属性权威, 负责实体属性创建, 管理和查询PAP策略管理点, 访问控制策
2021-03-27 14:00:10 2546
原创 高级反调试技术总结
高级反调试真正用于实际的软件保护的反调试技术, 对于破解有着高难度的挑战. 现在总结一下高级反调试技术.对于应用了大量垃圾代码, 条件分支语句, 循环语句, 加密/解密代码, 以及调用书(Call-tree), 要逆向这样的程序都是一种肉体和精神的双重受苦之旅, 再加上动态反调试的干扰, 甚至可以直接将军想要破解这个软件的逆向分析者. 对于经验丰富的玩家来说, 要完美分析一个保护器也是极其艰巨的挑战. (水了一些废话所以来看看这些让人受苦的天灾级武器(bushi垃圾代码基本思想很朴素, 就是向代码
2021-03-25 19:17:02 482
原创 反调试技术总结: 动态
静态反调试见上一篇博客动态反调试隐藏和保护程序代码与数据, 阻碍逆向分析. 动态反调试技术会干扰调试器, 使之无法正常跟踪查找源程序的核心代码(OEP).异常在SEH机制下, 如果程序发生异常OS通常会交给进程中的SEH处理, 但是被调试的进程异常被调试器接收, 所以根据这点可以判断进程是否被调试.通常SEH会通过INT3指令系统断点触发, 如果是调试状态, 进程会因为没有得到异常处理而终止, 非调试状态则会在SEH代码执行之后恢复正常, 继续运行, 为了破解这个反调试技术, 可以在调试器中
2021-03-25 16:44:42 509
原创 反调试技术总结: 静态
终于, 花了三周时间(期间经历了本科最后一门期末考试)学到了高级逆向技术, 反调试反调试反调试有各种各样的技术, 针对不同调试器和OS版本. 同时更新很快, 日新月异, 浓缩了设计者和破解者的攻防博弈智力对抗.分类(摘自ReverseCore50章)主要是按静态和动态反调试技术来分类.静态反调试技术通过探测调试状态来反调试.动态反调试技术扰乱调试的跟踪功能, 使调试者无法查看代码与数据.静态反调试检测调试状态的方法主要有, 调试器检测法, 调试环境检测, 强制隔离调试器等. 破解方
2021-03-24 23:55:00 581 1
原创 Ubuntu16.04纯命令行安装VMwareTools
三行搞定sudo apt-get install open-vm-tools -ysudo apt-get install open-vm-tools-desktopreboot 如果第一行命令出错, reboot一下再执行安装完最后reboot就完事.
2021-03-21 09:54:33 1130
原创 Windows内核会话机制
Windows内核在6.0版本后增加了会话管理机制, 注意5.x之前的版本是没有的. 贴个内核版本截图(wiki)内核在6.0以后就是vista, Win7时代开始有的会话机制.会话(session), 指登陆后的用户环境, 多个用户登录时, 就给每个用户提供一个独立的环境. 远程桌面链接也是一个用户登陆, 有独立的环境.Windows XP系统的第一个登陆的用户会话ID是0, 而Windows 7第一个登陆的用户ID是1, 系统会话都是0. 所以Win7下用户会话不是系统会话, 由此出现XP中能
2021-03-20 15:44:16 326
原创 修改PE文件头删除ASLR
Windows内核6.0版本之后增设了ALSR(Address Space Layout Randomization)机制, 使得每次PE文件记载到虚拟内存的起始地址不一样, 而且栈和堆起始地址也不一样.熟知PE文件头格式的逆向玩家, 可以通过修改一个标志位来达到删除编译好的可执行文件的ASLR功能.PE文件头中IMAGE_OPTIONAL_HEADER\DLL Characteristics设有IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE标志, 8140改到8100即可
2021-03-19 21:25:57 663
原创 WOW64机制
WOW64: Windows On Windows64是一种在64位OS中支持运行的32位应用程序的机制.64位Windows中, 64位应用程序会加载64位的kernel32.dll, ntdll.dll, 32位应用程序会加载32位的kernel32.dll, ntdll.dll. WOW64则会将32位的dll文件的API请求重定向到64位的dll文件.注意内核模式都是64位的, 32位是通过WOW64转换到64位运行....
2021-03-19 11:09:55 434
原创 Intel64和AMD64的联系
简单总结一下CPU的历史, 这样可以更直观的感受各个CPU之间的异同. 对于一个黑客来说这些还是得懂得吧32位时代Intel主导技术主流x86, AMD则生产x86兼容芯片.64位时代, Intel当时是和HP合作开发的IA-64架构的CPU(Itanium 安腾), 为了效率不向下兼容IA-32, 市场不太买账, 之后AMD推出AMD64兼容了IA-32架构, 大受市场欢迎. 再然后Intel很现实, 从AMD购买使用许可, 开发了与AMD64兼容的Intel64(Core 酷睿系列)所以之后AMD
2021-03-18 22:16:36 2958
原创 密码协议学习笔记 (1
协议为了完成一项任务设计的一个步骤序列.协议角色仲裁协议在可信任方担任仲裁者Trent的角色, 为通信双方Alice和Bob做担保.裁决协议作为仲裁协议的子协议, 在出现争端时给执行协议的参与者进行裁决.自动执行协议无须可信第三方就能保证公平的协议, 通常保证参与者的欺骗必被发现.对协议攻击攻击面是三个密码算法密码技术协议本身被动攻击: 窃听协议的部分或全部主动攻击: 修改协议或者通信的信息被动骗子(passive cheater): 遵守协议的参与者但是企图获取协议
2021-03-16 16:20:54 449
原创 高阶全局API钩取原理
取了个高阶的前缀, 感觉很吊的样子这里只简要叙述原理. (64位系统需要重写demo的注入程序, 相关API也有变动, 所以复现有难度原理钩取目标进程创建子进程的API, 这样每当目标进程创建子进程, 就会被自动注入, 全局钩取的实现就是钩取所有正在运行的进程的子进程创建的API, 通俗来说就是从源头钩取API, 从这个源头创建的进程都会被注入. 这就是全局钩取的基本思想.对比钩取IE浏览器的两种方式, 第一幅图是常规API钩取, 分别注入每个子进程(浏览器每个选项卡都是一个子进程); 第二幅图是直
2021-03-15 20:50:42 163
原创 逆向工具选择使用心得
最近一直在研读ReverseCore这本书, 目前已条过半, 总结一下作者李承远的总结所谓工程技术, 就是技术人员在自己熟悉的工具环境中解决实际问题.逆向分析工具非常多, 不需要也没必要跟风使用各种工具, 应该依照特定的标准来选择和使用工具, 构建自己熟悉的工作环境.心得1. 精简工具集每种功能选择一个工具即可, 不要跟风使用功能重复的工具2. 工具使用方便, 功能简单应该选择更顺手的工具(应该是废话), 界面直观简洁优先. 强调的是熟悉工具的功能, 快捷键, 各种用法, 这样才是顺手.3.
2021-03-15 15:38:06 153 2
原创 dll注入失败原因总结
常见的几个原因Windows Vista/ 7及之后的系统使用了会话隔离技术. 导致钩取API kernel32.CreateRemoteThread()失败, 可以尝试钩取ntdll.NtCreateThreadEx()开启杀毒软件的进程保护功能导致注入失败.注入的dll文件与目标文件格式不一致, 比如PE32注入PE32+, 或者PE32+注入PE32文件都会失败....
2021-03-15 14:23:19 6624
原创 热补丁原理
热补丁普通代码修改技术是修改API起始地址的5个字节, 而热补丁是修改7个字节.相比代码修改的API钩取, 采用热补丁能提高多线程系统的稳定性和性能.原理和特征二次跳转不需要钩取函数进行脱钩/挂钩操作...
2021-03-15 12:38:34 2022
原创 API钩取之代码修改原理
之前学习了IAT钩取技术, 现在总结代码修改方式进行API钩取的原理(ReverseCore33章).先看看钩取之前的正常流程call 函数调用ntdll中的一个函数(函数名很长不用记, 把它当成一个抽象函数即可)执行完之后就是retn 10返回调用位置的下一条指令接下来看看修改代码之后的执行流程流程很复杂, 其实理解之后就很简单了(丘成桐说过, 只要理解之后就会发现所有数学都是简单的书中严谨的表述因为使用了很长的函数名称, 所以看起来比较复杂, 跟着流程脑内模拟一遍, 就发现其实很直白. 现
2021-03-13 17:11:01 262
原创 数据挖掘的数据准备
数据挖掘在日益爆炸的信息量中挖掘出有价值的信息的技术.挖掘之前先看看数据准备.数据挖掘基本方法分类聚类关联规则异常检测本篇主要总结关联规则以及数据预处理的方法关联规则关联规则(Association Rule),旨在分析事务型数据(事务型数据(Transaction Data)是一类特殊的数据记录, 一条记录往往对应着一个项目(Item)的集合)从而根据一部分项目的存在记录,来判断另一部分项目是否同时存在于事务中.关联规则的基本形式:A → B,A、B均为集合形式指标支持度su
2021-03-11 13:49:17 710
原创 关系抽取与事件抽取
关系抽取概念从文本中识别出两个实体(或多个实体)之间存在的事实上的关系意义搜索引擎发现和关联知识的重要渠道知识库构建与知识关联的基础性手段支持问答系统、推荐系统等应用的有力工具形式化表达二元组<subject, objects> 适合特定领域关系抽取三元组<subject, predicate, object> 适合多类型关系抽取多元组<subject, predicate, object, time>抽取方法规则模式机器学习事件抽取
2021-03-11 12:56:31 1194
原创 命名实体识别
概念命名实体识别(Named Entity Recognition,NER)任务是识别文本中的人名、地名等专有名称,和有意义的时间、日期等数量短语等,并加以归类.命名实体识别是信息抽取的核心任务, 分为两个子任务判别实体边界判别实体类型内容分类实体类人名地名机构名日期类日期时间数值类货币百分比(注意不包括普通名词, 比如飞机, 公司等泛指名词)指标(同检索的衡量指标)采用Precision / Recall / F-value加以衡量准确率
2021-03-11 12:43:08 401
原创 信息检索和信息抽取的比较
信息检索信息抽取功能从文档集合查找子文档从文本中获取感兴趣的事实信息处理技术利用统计和关键词技术借助自然语言处理技术使用领域与领域知识无关借助领域知识
2021-03-11 12:13:45 631
原创 支持度和置信度
找出对于数据集的规则, 可以看作是一种关系的预测, 比如"如果对象执行了动作A, 那该对象可能愿意执行动作B".支持度指数据集中规则应验的次数, 即对于一条"如果对象执行了动作A, 那该对象可能愿意执行动作B"这样的规则, 在特定数据集中被验证的词数.置信度表示规则准确率, 对于特定规则, 在所有相同(与这个特定规则的前提相同)前提假设下的所占比例.说得比较抽象, 直接看代码理解.from collections import defaultdict# 上面"买了苹果又买香蕉"是一种情况,现在
2021-03-11 11:20:51 548
原创 scikit-learn安装
控制台输入pip install -U scikit-learn会自动安装Numpy和Scipy(如果之前没装的话)
2021-03-11 10:09:02 147
原创 IPython安装与运行
数据挖掘中会使用到IPython Notebook.在安装python之后(python3), 可以用管理员打开控制台pip install ipython[all]运行, 记得切换到目标文件的文件夹下, 服务端打开时默认显示输入命令时的路径目录ipython3 notebook之后会在默认浏览器中打开一个标签页链接到IPython服务端...
2021-03-11 10:03:10 436
原创 调试原理机制
其实非常简单, 对一个架构而言, 有一条表示断点的指令, 比如IA-32中是0xCC执行程序时, 代码指令会放入内存, 为了实现断点, 只需要找到需要打断点的指令的起始地址, 把该地址的任意一个字节改成0xCC(IA-32架构下), 程序执行到该指令时就会中断. 为了恢复执行, 只需把指令恢复原值即可....
2021-03-09 14:09:16 392
原创 API钩取
钩取流程反汇编/调试器理清程序结构和工作原理开发钩子代码, 修改/改进程序功能操作可执行文件和进程内存, 设置钩子机制对于Windows OS, 用户程序需要使用资源时, 需向内核申请使用API. 具体则是通过DLL文件一层层向下调用, 最后通过SYSENTER进入内核模式.示意图(notepad.exe打开一个文件的过程)API钩取完全技术图表(摘自ReverseCore29章)位置分类IAT 修改IAT地址为钩取函数地址EAT 修改EAT地址为钩取函数地址Code 从内
2021-03-09 13:42:23 156
原创 代码注入
Code Injection代码注入是一种向目标进程插入独立运行的代码并运行的技术. 一般调用CreateRemoteThread() API实现远程线程形式运行插入的代码(故也称为线程注入). 比较DLL注入DLL注入是将整个DLL文件插入进程, 代码数据并存, 可以正常运行.代码注入是仅将必要代码插入进程, 如果要运行代码, 需要再注入所需要的数据.用途/特点占用内存少难以查找痕迹(恶意代码经常适用代码注入)适用轻便的代码...
2021-03-08 14:45:38 135
原创 Winhex数据粘贴方法
Winhex选定一个起始地址注意两种方式的区别, paste是将剪切板的内容插入文件, 会导致文件数据量增加. write是覆盖原数据, 维持数据量不变.熟悉以后选择一个起始地址按快捷键即可Ctrl + V 插入Ctrl + B 修改...
2021-03-08 14:01:47 4967
原创 PE文件绑定导入表
BOUND IMPORT TABLE 绑定导入表是一种提高DLL加载速度的技术.对于PE文件而言是可选项, 不是必须. 当修改PE文件时, 如果添加导入的DLL文件, 需要注意有没有绑定导入表, 如果有需要删除或修改绑定导入表, 否则会运行时出错.PEview查看绑定导入表Winhex查看相应位置...
2021-03-08 12:34:44 231
原创 DLL卸载
DLL Ejection把DLL弹出的一种技术, 对应于DLL注入.原理其实也比较简单DLL注入是驱使目标进程调用LoadLibrary() APIDLL弹出是驱使目标进程调用FreeLibrary() API具体来说就是, 将FreeLibrary()的地址传递给CreateRemoteThread()的lpStartAddress参数, 把需要卸载DLL的句柄传递给lpParameter参数.同时需要注意, Windows内核对象设置有一个引用计数(Reference Count)参数,
2021-03-06 16:50:37 463
原创 DLL注入
机制DLL注入是向运行中的其他进程强制插入特定DLL文件. 以达到钩取API, 改进程序, 修复BUG等目的.实现方式创建远程线程(CreateRemoteThread() API)使用注册表(AppInit_DLLs值)消息钩取(SetWindowsHookEx() API)Win10下复现创建远程进程DLL注入notepad.exeReverseCore这本书中说XP/Win7系统测试通过, 其实在Win10下也可行.需要注意的坑点路径填写按Windows的写法, 书中W不能替
2021-03-06 15:42:40 406
原创 Windows消息钩取
机制Windows操作系统提供GUI(Graphic User Interface), 以事件驱动方式工作. 而所有外设的输入都是事件, 发生事件时, OS会把事先预定的消息发送给应用程序, 应用程序分析接收的消息然后执行相应动作.(比如我在用输入法打字, 按下键盘的时候Windows会给输入法应用程序发送消息, 输入法接收消息并分析之后给出打字的结果). 而钩子hook就在键盘输入与消息发送到应用程序的过程中起作用, 可以查看, 拦截, 修改消息.最基本的钩子实现就是调用Windows系统提供的AP
2021-03-05 21:15:20 162
原创 PE重定位
PE重定位基本原理(很简洁找到所有硬编码的地址每个地址减去ImageBase加上装载的实际地址主要是查找硬编码地址, 是由重定位表relocation table提供每个硬编码的偏移. 也就是基址重定位表.Base_Relocation_Table记录在PE头的DataDirectory数组的第六个元素.该表是由IMAGE_BASE_RELOCATION结构体组成的, 结构体记录了硬编码地址的偏移.IMAGE_BASE_RELOCATION结构体结构体由VirtualAddress,
2021-03-04 17:03:48 336 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人