多版本IDA分别使用不同的python版本
机器上安装了多个版本的 IDA 工具,不同的 IDA 使用不同的版本的 python 解释器
如果只安装单个 IDA ,只需要使用 idapyswitch.exe 进行指定就可以了
idapyswitch 会将配置写入到注册表 HKEY_CURRENT_USER\SOFTWARE\Hex-Rays\IDA 目录的 Python3TargetDLL 键下
这个配置值是每个版本 IDA 都要读取的,也就是说不同版本的 IDA 都使用这个值进行来确定 python 解释器
网上搜了一下,似乎没有很好的解决方案
于是在每个 IDA 的安装目录下增加一个 start.bat 脚本,通过脚本来启动 IDA,脚本中的 python 以实际版本为准
启动前更新一下注册表值为当前路径下的 python 解释器
@echo off …
基于IDA的bindiff使用
前言 需要逆向的二进制使用静态链接的方式打包了 cryptopp 库,需要还原 cryptopp 的符号,但是不知道具体版本号
这里使用 bindiff 从已发布的 cryptopp 库中恢复函数符号
版本安装 逆向这里使用的 IDA 为 7.5 的版本,解压后使用 idapyswitch 指定 IDA 使用自身目录下的 python 版本
cmd 到 IDA 的安装目录,使用命令切换 idapyswitch --force-path python38/python3.dll
启动 IDA 后,在左下角这里可以看到 python ,说明 python 环境已经配置好了
bindiff 为 google 开发的用于对比二进制的,可以使用图形界面,也可以在 IDA 中使用,github …
非对称加密rsa算法的理解
RSA原理 RSA 利用了大质数分解困难的数学特性
1、随机选两个大的质数 p 和 q,要求 1024 bit 或 2048 bit 的长度,这是非常非常大的数值
2、计算 n = p × q,这个 n 是公钥的一部
计算欧拉函数 φ(n) = (p - 1) × (q - 1),这里的 φ(n) 是私密的
3、根据 p 和 q 算出一个私钥 d 和一个公钥 e,让它们满足一些数学关系,使得:
用 e 加密的数据,可以用 d 解密,反过来也可以用 d 加密再用 e 解密(签名验证)
这里的 e 需要满足和 φ(n) 是互质的,实际上 RSA 常用的 e = 65537,这个质数保证了安全和效率
e 和 d 的数学关系满足 e * d 除以 φ(n) 余数为 1 ,表达式为 e * d = 1 + k * …
基于vm加密的php逆向分析
前言 对于 php 主流的加密方式有两种:
1、基于扩展的
2、本地加密,不涉及扩展
一些在 php 端通过 zend_compile_file 等函数就可以直接 dump 出原代码的,称之为加密实在是抬举了
之前有写过一篇直接 dump 出源码的分析 https://hujiao24.github.io/archives/php-decode
基于本人有限的了解,私以为 z5 和 swoole 等类似的才能称得上加密,这里的分析仅限于技术交流
代码可读 之前已经有大佬写过 z5 的逆向分析 https://www.52pojie.cn/thread-995682-1-1.html
最近拿到一份样本,从技术的角度简单了解基于 vm 加密的实现思路,由于逆向难度太大,这里的只是半成品
代码分为两大部分,前面两个函 …
在bitwarden插件保存登录的问题
bitwarden 是一款开源的密码管理工具,可以使用官方提供的付费密码托管服务,也可以自行部署进行使用,并且配备了 chrome 插件
这里在本地使用容器的方式进行部署,部署也不复杂,基于自签证书的方式进行访问,web 访问的时候会提示“连接不安全”
通常情况下,点击高级下的继续就可以忽视这个警告,不影响正常使用
在 chrome 浏览器的插件中,也是可以正常使用的,但是当需要新增登录项的时候就出现问题了,保存的时候提示错误如下
查看 chrome 插件的网络请求,保存的时候提示错误如下(net::ERR_CERT_AUTHRITY_INVALID),这是因为自签证书没被信任的原因导致的
web 页面是可以正常新增的,不过使用上会比较麻烦,远没有插件使用来的方便, …
程序加壳脱壳原理和实现
理论 一个可运行的执行文件,至少会有一个代码段,程序的入口点指向代码段,程序运行的时候,从入口点开始执行代码段指令
为了将一个正常的程序进行加壳保护,至少要三部分逻辑配合
1、待加壳保护的程序
2、加壳逻辑
3、脱壳逻辑
为便于理解,以下仅描述主要的逻辑,以 windows 为例,运行加壳程序,将待加壳程序的二进制内容读入到内存块
将该内存块解析成 PE 结构,并对该 PE 结构的代码段执行加密操作,如异或一个 KEY 或使用定制的加密算法
将该 PE 结构进行新增代码段,新增节的内容填充为脱壳的代码逻辑,用于在程序运行的时候对原逻辑进行解密脱壳
修改内存块内容,将入口点 base 地址指向脱壳代码段,还需要修正其他的额外信息,如 PE 文件大小等其他一些属性
将该内存区块保存成执行文件,在发布的时候将该执行文 …
ubuntu不生成core文件的处理
1、设置unlimited ulimit -a 查看是否设置,没有设置的使用下面命令设置
ulimit -c unlimited 这个设置只在当前会话有效,添加到 ~/.bashrc 中,重开终端生效
2、sysctl配置 修改 /etc/sysctl.conf 文件 ,增加以下两个配置, core_uses_pid 表示 core 文件名是否使用 pid
kernel.core_pattern = core kernel.core_uses_pid = 1 修改后执行 sysctl -p 生效
3、apport配置 ubuntu 默认启用了 apport,它会拦截崩溃信息并生成错误报告,而不是直接生成 core 文件
禁止生成错误报告,修改 vim /etc/default/apport
enabled=0
基于php扩展加密的一个简单逆向
前言 这里是对 php 扩展加密的一个入门学习,参考了原作者的开源实现 https://github.com/lihancong/tonyenc
该项目仅仅几百行代码,实现了 php 扩展加密的基本逻辑,通过该模块可以快速熟悉 php 基于扩展加密的整个处理流程
组件构建 本地的 php 环境是 7.4, 本地调试环境构建可以参考 这里,拉取 tonyenc 项目到本地进行编译的时候提示错误
In file included from /root/develop/tonyenc/tonyenc.c:30: /root/develop/tonyenc/core.h: In function ‘cgi_compile_file’: /root/develop/tonyenc/core.h:86:30: error: …
基于php-parser的php代码反混淆
前言 php-parser 是一个使用 PHP 编写的开源项目,它的作用是把 PHP 代码解析成 AST(抽象语法树)
可以基于 php-parser 做静态分析、代码转换、代码格式化、Linter、甚至写一个 PHP 解释器都行
这个库也是学习编译原理、分析 PHP 代码结构的神器,作者是 PHP 社区大佬 nikic,也是 PHP 编译器的核心开发者
PHP-Parser 项目的开源地址 https://github.com/nikic/PHP-Parser
php-parser包安装 php-parser 是使用 composer 进行管理的,composer 是 PHP 的依赖管理工具
就像 Node.js 下的 npm,Python 下的 pip,composer的下载地址在这里
在 windows …
一个简单的php加密的理解
前言 原帖子 https://www.52pojie.cn/thread-1991616-1-1.html
一段简单的 php 代码加密,大佬使用了一段 python 代码给解密出来了,但是我没太理解整个逻辑
于是在本地跑了一遍,尝试理解整个解密流程,这里记录下整个学习过程
可读化显示 加密代码使用了非可读字符的变量名,需要重命名处理为可读的
使用 php-parser 将代码的变量进行重命名及格式化显示,安装模块 composer require nikic/php-parser
遍历 AST 树 enterNode 的时候进行变量重命名,变量命名格式为 var? 数字递增
<?php require 'vendor/autoload.php'; use PhpParser\Error; …
Typora亲测可用免激活版
版本安装 从官方 https://typoraio.cn/ 下载 Typora 1.8.10 历史版本,也可以 从 csdn 这里下载,较新的版本已经修复了该问题
Typora免激活 修改js检查 在 typora 的安装目录 Typora\resources\page-dist\static\js 下,找到 LicenseIndex.180dd4c7.c77b6991.chunk.js 类似的 js 文件
打开后将 e.hasActivated="true"==e.hasActivated 替换为 e.hasActivated="true"=="true"
关闭弹窗 打开 Typora\resources\page-dist\license.html …
picgo的vscode插件支持easyimage图床
前言 picgo 官方提供的 vscode 插件,默认不支持自定义图床 easyimage,这里进行适配以便支持
代码构建 下载仓库代码 https://github.com/PicGo/vs-picgo.git,在 vscode 市场中发布的最新版本为 2.1.6,将本地代码分支切换到 2.1.6
执行 yarn install 以及 yarn run build,在构建的时候提示错误如下
这是因为自 node 17 开始,node 升级使用了 OpenSSL 3.0,对允许的算法和密钥大小的限制更加严格
可以通过参数 openssl-legacy-provider 临时规避,powershell …
nodejs的版本管理工具NVM
NVM 是一个 node 的版本管理工具, windows 版本的 下载地址,下载完毕后双击安装
NVM 的主要命令 nvm list 查看当前已经安装的 node 版本,以及正在使用的 node 版本(*显示),这个和 nvm list installed 命令是一致的
nvm list available 查看有哪些可用的 node 版本,需要安装的时候优先选择 LTS 版本
版本安装,根据前面列出来的可安装版本,指定安装某一个版本的 node 应用 nvm install 20.16.0
版本切换,使用 use 指令切换本地的已安装版本 nvm use 20.16.0
切换后,查看 node 的版本号显示 20.16.0
NVM 的主要原理 1、NVM 将不同版本的 node 安装到 nvm …
wordpress的cookie理解
登录 wordpress 登录 wordpress 的时候 Cookie 显示为
PHPSESSID=ubilj5ad65810hqv88emitmvkc; isLogin=true; night=0; wordpress_logged_in_27e3261db108cd80480af5f900ac865e=1735846526%7C1744418831%7CrTugvME3l2ZITBoxf6JAsAn4woFdbIZvggvvKDRHQhc%7C3fa99b7f0728dffc47f75b2ff9fad46c63c2829a512e6a09c3bf3bde7cf48946; Hm_lvt_b9d1067bce8fcdeb644686f85bafea51=1743219234; …
ubuntu部署ssl免费证书
证书安装 在进行证书安装前,需要将域名的 DNS 指定到你的 ubuntu 服务器节点上,ubuntu 安装 Let’s Encrypt 证书步骤如下
安装 certbot 工具
apt update apt install certbot python3-certbot-nginx 运行 certbot 命令进行证书安装
对于 nginx
certbot --nginx -d mydomain.com -d www.mydomain.com 对于 apache
certbot --apache -d mydomain.com -d www.mydomain.com 如果不填写邮箱的话,可以指定 certbot 参数 –register-unsafely-without-email,生成证书的输出如 …