前言

上次写了一个pyd逆向,在文章末尾讲了hook模块等方法。现在来完善一下。众所周知,python打包的exe,如果没加任何加密的话,源码是可以很容易被轻松逆向出来的。所以就会有人会将python代码打包成pyd文件。其实就是一种dll文件。来增加破解难度。

1.hook模块

一.首先,我们手动写一个例子

import base64
key = input("请输入密码:")
print(str(base64.b64encode(key.encode()),'utf-8'))
key = str(base64.b64encode(key.encode()),'utf-8')
if key == "MTIzNDU2":print("成功")
else:print("失败")

这个是个很简单的例子,就是对输入的字符串进行base64编码,再进行比较。我们将这个例子打包成pyd,来测试一下

import test1
test1

我们可以得到以下结果

请输入密码:123456
MTIzNDU2
成功

这个是成功的状态

请输入密码:12345
MTIzNDU=
失败

这个失败的状态。

现在我们来尝试hook一下base64模块,当然,这个是我们自己写的代码,我们知道引用那些模块,别人写的,我们肯定是不知道的。那咋办?

二.将pyd拿到ida里面进行分析,找到导入了那些模块

这里我们可以看到,里面有些字符串都出来了,甚至密码都出来了,当然我们这里是个例子是很简单的,就是一个测试。一般验证不会这样简单。我们看到了base64这个字符串,我们就有理由怀疑,他是不是引用了base64模块,这里我们做一个测试,我们将这个base64这个字符串改一下名字,引入我们自己的模块

这里我们改成base66。然后再运行一下我们的代码。那肯定会报错,会说没有base66这个模块。

三.搭建自己的模块base66

在和pyd相同文件夹下,创建base66.py文件。里面先不写任何代码。然后再运行一下代码。看看效果

他说base66这个模块没有b64encode这个属性。那当然,我们啥代码没有写,那肯定是没有这个属性的,但是不打紧。我们知道他是一个base64加密,我们就在里面调用base64.b64encode

它接收字节,那我们就这样写

import base64
def b64encode(s, altchars=None):print(s)return base64.b64encode(s)

很简单的,运行一下看看

请输入密码:1234
b'1234'
MTIzNA==
b'1234'
失败

可以得到我们输入的参数,我们hook的目的就达到了。

2.修改if返回

pyd验证正不正确,里面肯定会用到if语句,我们能不能改一下if语句返回了?那当然是肯定的。那如何修改了。这里参考了这篇文章(https://www.keepnight.com/archives/767/)。我们将py编译成pyd的时候,多出来了一个c文件,那个我们可以参考参考。

找到这个函数__Pyx_PyUnicode_Equals,看样子就是比较字符串的。这个pyd也就是这个c语言编译的,那么到ida里面也能找到。

在ida里面找到这样的函数,看样子就是了。那我们改一下汇编语言

将第一个分叉,jz改成jmp。这个if就只会返回true了。当然你也可以改成本来是true返回flase,false返回true的。改完保存一下。再运行一下,看看效果

请输入密码:1212121
b'1212121'
MTIxMjEyMQ==
b'1212121'
成功

接下来就会发现,不论输入什么,都会返回成功了。改if返回也成功了。

OK,今天就到这里了,有啥问题可以加一群342096685,二群902854353。

pyd文件逆向(二)相关推荐

  1. [网络安全自学篇] 六十一.PE文件逆向之数字签名详细解析及Signcode、PEView、010Editor、Asn1View等工具用法(二)

    本系列虽然叫"网络安全自学篇",但由于系统安全.软件安全与网络安全息息相关,作者同样会分享一些系统安全案例及基础工具用法,也是记录自己的成长史,希望大家喜欢,一起进步.前文 &qu ...

  2. [网络安全自学篇] 五十七.PE文件逆向之什么是数字签名及Signtool签名工具详解(一)

    本系列虽然叫"网络安全自学篇",但由于系统安全.软件安全与网络安全息息相关,作者同样会分享一些系统安全案例及基础工具用法,也是记录自己的成长史,希望大家喜欢,一起进步.前文讲解了i ...

  3. win10 下pycharm+anaconda 编译生成pyd文件

    由于生产部署的问题,需要把用python写的深度学习代码编译为可被调用的文件.上网搜索了下,暂时了解到win10下pyd文件比较流行.下面是直接引用某位博主的结论,个人感觉总结的很好.其中Cython ...

  4. android p ify 三星,Enjarify - Android逆向(二)

    Enjarify - Android逆向(二) 首先奉上enjarify的Github地址,小伙伴们可以clone到本地使用哦 Enjarify介绍 上一节我们说了,在开发Android应用时,And ...

  5. python:.py文件转.dll文件(.pyd文件)

    基于python,把python文件转为.dll文件,我查了很多方法,没有能把python文件直接转.dll文件的..py要转dll文件都是先转成.pyd文件,然后再把.pyd这个后缀改成.dll,如 ...

  6. Python将py文件转换为pyd文件

    Python减少内存占用,可以参考如下文章: 从青铜到王者,一文教你节省90%内存占用 文章中提到的将py文件进行编译,编译成pyd文件(Windows),或者.so文件(linux)后会提高运行效率 ...

  7. VS2019编译自动微分库ADOL-C并利用SWIG打包为.pyd文件

    目录 前言 一.VS编译ADOL-C 二.SWIG生成.py和.cxx接口文件 三.VS编译.cxx生成.pyd 1. VS项目属性配置 2. 生成.pyd文件 前言 自动微分库ADOL-C提供了SW ...

  8. Python文件格式详解:py、pyc、pyo、pyd文件区别

    Python文件格式详解:py.pyc.pyo.pyd文件区别 Python是一种非常流行的编程语言,它具有简洁.易学.高效等优势,在各个领域得到了广泛的应用.而在Python编写程序时,我们会发现存 ...

  9. pyinstaller打包venv(虚拟环境),.pyd文件,非.py文件打包

    pyinstaller打包venv(虚拟环境),.pyd文件,非.py文件打包 1 首先pyinstaller不会使用venv中的包,请先进入虚拟环境,然后再使用 pyinstaller xxx.py ...

  10. 基于深度学习的病毒检测技术无需沙箱环境,直接将样本文件转换为二维图片,进而应用改造后的卷积神经网络 Inception V4 进行训练和检测...

    话题 3: 基于深度学习的二进制恶意样本检测 分享主题:全球正在经历一场由科技驱动的数字化转型,传统技术已经不能适应病毒数量飞速增长的发展态势.而基于沙箱的检测方案无法满足 APT 攻击的检测需求,也 ...

最新文章

  1. nodejs配置nginx 以后链接mongodb数据库
  2. LeetCode OJ - Copy List with Random Pointer
  3. delphi 怎么获取工程版本号
  4. Flask框架后端开发常见错误处理(2018/11/14)
  5. zend studio安装xdebug调试工具
  6. Effective C#:避免使用ICloneable接口
  7. 终于弄明白了 Singleton,Transient,Scoped 的作用域是如何实现的
  8. CSS浏览器兼容性----Hack
  9. android上实现0.5px线条
  10. InnoDB与UUID
  11. 借书表设计 mysql_请设计一套图书馆借书管理系统的数据库表结构
  12. 如何实现批量替换文件夹名称?
  13. 出生年分数 15作者 陈越单位 浙江大学
  14. CryENGINE 3 百度百科介绍
  15. 数值重映射方法(Remap)
  16. Jquery利用ajax调用asp.net webservice的各种数据类型(总结篇)
  17. [设计模式]设计模式SOLID原则
  18. 2023南京大学文博专业考研上岸经验
  19. 本周聚划算| 避免上班5分钟被开除 直降2000元企业办公实用利器一站全掌握
  20. LeetCode 题库 全 JAVA 解题---771.宝石与石头

热门文章

  1. java苹果沙盒验证参数问题_java -苹果支付凭证校验
  2. java 初始化duration_Java Duration toMillis()用法及代码示例
  3. Debian7 更换源
  4. 初识c语言思维导图及大纲 (内含思维导图图片及pdf版下载链接)
  5. 计算机桌面应用程序图标不见了怎么办,桌面程序图标不见了,桌面软件快捷方式不见了怎么办?...
  6. 区块链供应链金融实战3
  7. 能否将一个网址(如QQ空间网址),打包成APK,然后别人下载APK安装到手机后,点击进入这个网址?
  8. DialogFragment dismiss闪退异常DialogFragment何时持有FragmentManager
  9. 怎样使用 Hardhat 开发 Solidity 智能合约
  10. ThinkBook 14 G2 ITL 重装系统 笔记