Pinpoint(源伞) 破解
Pinpoint(源伞) 破解
环境配置
1 | |
1 | |
license文件上传接口:/platform/upload_file。

全局搜索Need valid license file无结果。于是搜索upload_file。
1 | |

1 | |

1 | |
1 | |
upload_file会调用_MainBlueprintManager__platform_manager.validate_file()
validate_file定义在文件./pp-platform/src/services/pp_platform_manager.pyc中,同样无法使用uncompyle6反编译。
1 | |
关键函数get_os_buf_limit,仅看这个函数名并不能猜测它的功能。
这个函数在文件./pp-platform/pp_service/utils.pyc中定义,这个文件居然可以用uncompyle6反编译成功。
1 | |
实际上是调用了so中的函数。env就是license文件的路径。
1 | |
根据这段代码发现开发者将关键字符串都进行了转换,保存在consts,使用时需要转码。
1 | |

Patch urils.py 实现破解:
1 | |

解决uncompyle6反编译失败

1 | |
根据报错信息可以确定是在反编译STORE_ANNOTATION指令时发生错误。
Python3.6.3指令表(Python-3.6.3/Include/opcode.h):
1 | |
根据指令序列,可以定位到STORE_ANNOTATION指令的位置。
1 | |

尝试将0x7f替换成其他指令后(如0x01),反编译成功。
1 | |
1 | |