WinToUSB 9.0 离线注册

news/2024/11/16 2:10:12/文章来源:https://www.cnblogs.com/DirWang/p/18438265

WinToUSB 9.0

qt程序,注册验证代码与EasyUEFI 大同小异,这里仅记录相关类、函数地址
关联 https://www.cnblogs.com/DirWang/p/18149030

目录
  • WinToUSB 9.0
    • CActivationDlg
      • CActivationDlg QMetaObject__d
    • CActivationRegisterPage
      • CActivationRegisterPage QMetaObject__d
    • CActivationOfflinePage
      • CActivationOfflinePage QMetaObject__d
  • check
    • 注册码
      • check_rsa_pubk_dec_49B2C0
      • rsa_dec_49AFD0
    • 激活码
      • check_activation_570C40
  • 测试
  • py

CActivationDlg

.rdata:008047F0 ; class CActivationDlg: CPopupWnd, CWinBaseFrame, QDialog, QWidget, QObject, QPaintDevice;  [MI] (#classinformer)
.rdata:008047F0                 dd offset const CActivationDlg::`RTTI Complete Object Locator'
.rdata:008047F4 const CActivationDlg::`vftable' dd offset sub_493D70
.rdata:008047F4                                         ; DATA XREF: sub_402670+B9↑o
.rdata:008047F4                                         ; sub_403F40+36↑o ...
.rdata:008047F8                 dd offset sub_493D90
.rdata:008047FC                 dd offset sub_493DF0
.rdata:00804800                 dd offset sub_403FB0
.rdata:00804804                 dd offset QWidget::event(QEvent *)
.rdata:00804808                 dd offset sub_49C380
.rdata:0080480C                 dd offset QObject::timerEvent(QTimerEvent *)
.rdata:00804810                 dd offset QObject::childEvent(QChildEvent *)
.rdata:00804814                 dd offset QObject::customEvent(QEvent *)
.rdata:00804818                 dd offset QObject::connectNotify(QMetaMethod const &)
.rdata:0080481C                 dd offset QObject::disconnectNotify(QMetaMethod const &)
.rdata:00804820                 dd offset QDialog::setVisible(bool)
.rdata:00804824                 dd offset QDialog::sizeHint(void)
.rdata:00804828                 dd offset QDialog::minimumSizeHint(void)
.rdata:0080482C                 dd offset QWidget::heightForWidth(int)
.rdata:00804830                 dd offset QWidget::hasHeightForWidth(void)
.rdata:00804834                 dd offset QWidget::mousePressEvent(QMouseEvent *)
.rdata:00804838                 dd offset QWidget::mouseReleaseEvent(QMouseEvent *)
.rdata:0080483C                 dd offset QWidget::mouseDoubleClickEvent(QMouseEvent *)
.rdata:00804840                 dd offset QWidget::mouseMoveEvent(QMouseEvent *)
.rdata:00804844                 dd offset QWidget::wheelEvent(QWheelEvent *)
.rdata:00804848                 dd offset sub_49DBF0
.rdata:0080484C                 dd offset QWidget::keyReleaseEvent(QKeyEvent *)
.rdata:00804850                 dd offset QWidget::focusInEvent(QFocusEvent *)
.rdata:00804854                 dd offset QWidget::focusOutEvent(QFocusEvent *)
.rdata:00804858                 dd offset QWidget::enterEvent(QEvent *)
.rdata:0080485C                 dd offset QWidget::leaveEvent(QEvent *)
.rdata:00804860                 dd offset sub_49BE90
.rdata:00804864                 dd offset QWidget::moveEvent(QMoveEvent *)
.rdata:00804868                 dd offset QDialog::resizeEvent(QResizeEvent *)
.rdata:0080486C                 dd offset sub_49C0A0
.rdata:00804870                 dd offset QDialog::contextMenuEvent(QContextMenuEvent *)
.rdata:00804874                 dd offset QWidget::tabletEvent(QTabletEvent *)
.rdata:00804878                 dd offset QWidget::actionEvent(QActionEvent *)
.rdata:0080487C                 dd offset QWidget::dragEnterEvent(QDragEnterEvent *)
.rdata:00804880                 dd offset QWidget::dragMoveEvent(QDragMoveEvent *)
.rdata:00804884                 dd offset QWidget::dragLeaveEvent(QDragLeaveEvent *)
.rdata:00804888                 dd offset QWidget::dropEvent(QDropEvent *)
.rdata:0080488C                 dd offset QDialog::showEvent(QShowEvent *)
.rdata:00804890                 dd offset QWidget::hideEvent(QHideEvent *)
.rdata:00804894                 dd offset QWidget::nativeEvent(QByteArray const &,void *,long *)
.rdata:00804898                 dd offset QWidget::changeEvent(QEvent *)
.rdata:0080489C                 dd offset QWidget::inputMethodEvent(QInputMethodEvent *)
.rdata:008048A0                 dd offset QWidget::inputMethodQuery(Qt::InputMethodQuery)
.rdata:008048A4                 dd offset QWidget::focusNextPrevChild(bool)
.rdata:008048A8                 dd offset QDialog::open(void)
.rdata:008048AC                 dd offset sub_49BB50
.rdata:008048B0                 dd offset QDialog::done(int)
.rdata:008048B4                 dd offset QDialog::accept(void)
.rdata:008048B8                 dd offset sub_49C0D0
.rdata:008048BC                 dd offset sub_49C170
.rdata:008048C0                 dd offset sub_49DAC0
.rdata:008048C4                 dd offset nullsub_15
.rdata:008048C8                 dd offset QWidget::showMinimized(void)
.rdata:008048CC                 dd offset nullsub_16
.rdata:008048D0                 dd offset nullsub_17
.rdata:008048D4                 dd offset nullsub_18
.rdata:008048D8                 dd offset sub_49DA70
.rdata:008048DC                 dd offset sub_4010F0

CActivationDlg QMetaObject__d

.rdata:009D4510 qt_meta_stringdata_CActivationDlg QArrayData <0FFFFFFFFh, 0Eh, 0, 30h>
.rdata:009D4510                                         ; DATA XREF: .rdata:CActivationDlg↓o
.rdata:009D4510                                         ; String: CActivationDlg, alloc: 0, capRvrsd 0
.rdata:009D4520                 QArrayData <0FFFFFFFFh, 15h, 0, 2Fh> ; String: sigReinitRegisterPage, alloc: 0, capRvrsd 0
.rdata:009D4530                 QArrayData <0FFFFFFFFh, 0, 0, 35h> ; String: , alloc: 0, capRvrsd 0
.rdata:009D4540 aCactivationdlg db 'CActivationDlg',0   ; DATA XREF: sub_493D90+11↑o
.rdata:009D454F aSigreinitregis db 'sigReinitRegisterPage',0
.rdata:009D4565                 align 4
.rdata:009D4568 qt_meta_dataCActivationDlg QMetaObjectPrivate <7, 0, 0, 0, 1, 0Eh, 0, 0, 0, 0, 0, 0, 0, 1>
.rdata:009D4568                                         ; DATA XREF: .rdata:CActivationDlg↓o
.rdata:009D4568                                         ; CLASS: CActivationDlg
.rdata:009D4568                                         ; MethodCount: 1 PropertyCount: 0 EnumCount: 0
.rdata:009D4568                                         ; ConstructorCount: 0 SignalCount: 1
.rdata:009D45A0                 QMetaMethod <1, 0, 13h, 2, 6> ; SIGNAL Public Void sigReinitRegisterPage()
.rdata:009D45B4                 dd 2Bh                  ; Void
.rdata:009D45B8                 db    0
.rdata:009D45B9                 db    0
.rdata:009D45BA                 db    0
.rdata:009D45BB                 db    0
.rdata:009D45BC CActivationDlg  QMetaObject__d <offset CPopupWnd, \
.rdata:009D45BC                                         ; DATA XREF: sub_4041A0+25D↑o
.rdata:009D45BC                                         ; CActivationDlg__qt_static_metacall+16↑o ...
.rdata:009D45BC                                 offset qt_meta_stringdata_CActivationDlg, \
.rdata:009D45BC                                 offset qt_meta_dataCActivationDlg, \
.rdata:009D45BC                                 offset CActivationDlg__qt_static_metacall, 0, 0>

CActivationRegisterPage

.rdata:00804E20 ; class CActivationRegisterPage: CBasePage, QWidget, QObject, QPaintDevice;  [MI] (#classinformer)
.rdata:00804E20                 dd offset const CActivationRegisterPage::`RTTI Complete Object Locator'
.rdata:00804E24 const CActivationRegisterPage::`vftable' dd offset sub_494130
.rdata:00804E24                                         ; DATA XREF: CActivationRegisterPage_405CF0+52↑o
.rdata:00804E24                                         ; sub_405E10+25↑o
.rdata:00804E28                 dd offset sub_494150
.rdata:00804E2C                 dd offset sub_4941B0
.rdata:00804E30                 dd offset sub_405DF0
.rdata:00804E34                 dd offset QWidget::event(QEvent *)
.rdata:00804E38                 dd offset QObject::eventFilter(QObject *,QEvent *)
.rdata:00804E3C                 dd offset QObject::timerEvent(QTimerEvent *)
.rdata:00804E40                 dd offset QObject::childEvent(QChildEvent *)
.rdata:00804E44                 dd offset QObject::customEvent(QEvent *)
.rdata:00804E48                 dd offset QObject::connectNotify(QMetaMethod const &)
.rdata:00804E4C                 dd offset QObject::disconnectNotify(QMetaMethod const &)
.rdata:00804E50                 dd offset QWidget::setVisible(bool)
.rdata:00804E54                 dd offset QWidget::sizeHint(void)
.rdata:00804E58                 dd offset QWidget::minimumSizeHint(void)
.rdata:00804E5C                 dd offset QWidget::heightForWidth(int)
.rdata:00804E60                 dd offset QWidget::hasHeightForWidth(void)
.rdata:00804E64                 dd offset QWidget::mousePressEvent(QMouseEvent *)
.rdata:00804E68                 dd offset QWidget::mouseReleaseEvent(QMouseEvent *)
.rdata:00804E6C                 dd offset QWidget::mouseDoubleClickEvent(QMouseEvent *)
.rdata:00804E70                 dd offset QWidget::mouseMoveEvent(QMouseEvent *)
.rdata:00804E74                 dd offset QWidget::wheelEvent(QWheelEvent *)
.rdata:00804E78                 dd offset QWidget::keyPressEvent(QKeyEvent *)
.rdata:00804E7C                 dd offset QWidget::keyReleaseEvent(QKeyEvent *)
.rdata:00804E80                 dd offset QWidget::focusInEvent(QFocusEvent *)
.rdata:00804E84                 dd offset QWidget::focusOutEvent(QFocusEvent *)
.rdata:00804E88                 dd offset QWidget::enterEvent(QEvent *)
.rdata:00804E8C                 dd offset QWidget::leaveEvent(QEvent *)
.rdata:00804E90                 dd offset QWidget::paintEvent(QPaintEvent *)
.rdata:00804E94                 dd offset QWidget::moveEvent(QMoveEvent *)
.rdata:00804E98                 dd offset QWidget::resizeEvent(QResizeEvent *)
.rdata:00804E9C                 dd offset QWidget::closeEvent(QCloseEvent *)
.rdata:00804EA0                 dd offset QWidget::contextMenuEvent(QContextMenuEvent *)
.rdata:00804EA4                 dd offset QWidget::tabletEvent(QTabletEvent *)
.rdata:00804EA8                 dd offset QWidget::actionEvent(QActionEvent *)
.rdata:00804EAC                 dd offset QWidget::dragEnterEvent(QDragEnterEvent *)
.rdata:00804EB0                 dd offset QWidget::dragMoveEvent(QDragMoveEvent *)
.rdata:00804EB4                 dd offset QWidget::dragLeaveEvent(QDragLeaveEvent *)
.rdata:00804EB8                 dd offset QWidget::dropEvent(QDropEvent *)
.rdata:00804EBC                 dd offset showEvent_406620
.rdata:00804EC0                 dd offset QWidget::hideEvent(QHideEvent *)
.rdata:00804EC4                 dd offset QWidget::nativeEvent(QByteArray const &,void *,long *)
.rdata:00804EC8                 dd offset QWidget::changeEvent(QEvent *)
.rdata:00804ECC                 dd offset QWidget::inputMethodEvent(QInputMethodEvent *)
.rdata:00804ED0                 dd offset QWidget::inputMethodQuery(Qt::InputMethodQuery)
.rdata:00804ED4                 dd offset QWidget::focusNextPrevChild(bool)
.rdata:00804ED8                 dd offset sub_405E90
.rdata:00804EDC                 dd offset nullsub_19
.rdata:00804EE0                 dd offset nullsub_20
.rdata:00804EE4                 dd offset setupUi_405EA0
.rdata:00804EE8                 dd offset set_button_406400
.rdata:00804EEC                 dd offset Register_4066F0
.rdata:00804EF0                 dd offset buy__open_store_wintousb_406650
.rdata:00804EF4                 dd offset sub_406640

CActivationRegisterPage QMetaObject__d

.rdata:009D4010 qt_meta_stringdata_CActivationRegisterPage QArrayData <0FFFFFFFFh, 17h, 0, 0A0h>
.rdata:009D4010                                         ; DATA XREF: .rdata:CActivationRegisterPage↓o
.rdata:009D4010                                         ; String: CActivationRegisterPage, alloc: 0, capRvrsd 0
.rdata:009D4020                 QArrayData <0FFFFFFFFh, 1Ah, 0, 0A8h> ; String: sigReinitOfflineActivePage, alloc: 0, capRvrsd 0
.rdata:009D4030                 QArrayData <0FFFFFFFFh, 0, 0, 0B3h> ; String: , alloc: 0, capRvrsd 0
.rdata:009D4040                 QArrayData <0FFFFFFFFh, 8, 0, 0A4h> ; String: QString&, alloc: 0, capRvrsd 0
.rdata:009D4050                 QArrayData <0FFFFFFFFh, 0Dh, 0, 9Dh> ; String: eEditionType&, alloc: 0, capRvrsd 0
.rdata:009D4060                 QArrayData <0FFFFFFFFh, 1Fh, 0, 9Bh> ; String: sigReinitActivationCompletePage, alloc: 0, capRvrsd 0
.rdata:009D4070                 QArrayData <0FFFFFFFFh, 6, 0, 0ABh> ; String: BRRET&, alloc: 0, capRvrsd 0
.rdata:009D4080                 QArrayData <0FFFFFFFFh, 0Eh, 0, 0A2h> ; String: slotReinitPage, alloc: 0, capRvrsd 0
.rdata:009D4090                 QArrayData <0FFFFFFFFh, 1Ah, 0, 0A1h> ; String: slotLicenseEditTextChanged, alloc: 0, capRvrsd 0
.rdata:009D40A0                 QArrayData <0FFFFFFFFh, 0Ah, 0, 0ACh> ; String: strLicense, alloc: 0, capRvrsd 0
.rdata:009D40B0 aCactivationreg db 'CActivationRegisterPage',0
.rdata:009D40B0                                         ; DATA XREF: sub_494150+11↑o
.rdata:009D40C8 aSigreinitoffli db 'sigReinitOfflineActivePage',0
.rdata:009D40E3                 align 4
.rdata:009D40E4 aQstring        db 'QString&',0
.rdata:009D40ED aEeditiontype_1 db 'eEditionType&',0
.rdata:009D40FB aSigreinitactiv db 'sigReinitActivationCompletePage',0
.rdata:009D411B aBrret_4        db 'BRRET&',0
.rdata:009D4122 aSlotreinitpage db 'slotReinitPage',0
.rdata:009D4131 aSlotlicenseedi db 'slotLicenseEditTextChanged',0
.rdata:009D414C aStrlicense     db 'strLicense',0
.rdata:009D4157                 align 4
.rdata:009D4158 qt_meta_dataCActivationRegisterPage QMetaObjectPrivate <7, 0, 0, 0, 4, 0Eh, 0, 0, 0, 0, 0, 0, 0, 2>
.rdata:009D4158                                         ; DATA XREF: .rdata:CActivationRegisterPage↓o
.rdata:009D4158                                         ; CLASS: CActivationRegisterPage
.rdata:009D4158                                         ; MethodCount: 4 PropertyCount: 0 EnumCount: 0
.rdata:009D4158                                         ; ConstructorCount: 0 SignalCount: 2
.rdata:009D4190                 QMetaMethod <1, 3, 22h, 2, 6> ; SIGNAL Public Void sigReinitOfflineActivePage(QString& , QString& , eEditionType& )
.rdata:009D41A4                 QMetaMethod <5, 4, 29h, 2, 6> ; SIGNAL Public Void sigReinitActivationCompletePage(BRRET& , QString& , QString& , eEditionType& )
.rdata:009D41B8                 QMetaMethod <7, 0, 32h, 2, 8> ; SLOT Private Void slotReinitPage()
.rdata:009D41CC                 QMetaMethod <8, 1, 33h, 2, 8> ; SLOT Private Void slotLicenseEditTextChanged(QString strLicense)
.rdata:009D41E0                 dd 2Bh                  ; Void
.rdata:009D41E4                 dd 80000003h            ; QString&
.rdata:009D41E8                 dd 80000003h            ; QString&
.rdata:009D41EC                 dd 80000004h            ; eEditionType&
.rdata:009D41F0                 dd 2
.rdata:009D41F4                 dd 2
.rdata:009D41F8                 dd 2
.rdata:009D41FC                 dd 2Bh                  ; Void
.rdata:009D4200                 dd 80000006h            ; BRRET&
.rdata:009D4204                 dd 80000003h            ; QString&
.rdata:009D4208                 dd 80000003h            ; QString&
.rdata:009D420C                 dd 80000004h            ; eEditionType&
.rdata:009D4210                 dd 2
.rdata:009D4214                 dd 2
.rdata:009D4218                 dd 2
.rdata:009D421C                 dd 2
.rdata:009D4220                 dd 2Bh                  ; Void
.rdata:009D4224                 dd 2Bh                  ; Void
.rdata:009D4228                 dd 0Ah                  ; QString
.rdata:009D422C                 dd 9                    ; strLicense
.rdata:009D4230                 db    0
.rdata:009D4231                 db    0
.rdata:009D4232                 db    0
.rdata:009D4233                 db    0
.rdata:009D4234 CActivationRegisterPage QMetaObject__d <offset CBasePage, \
.rdata:009D4234                                         ; DATA XREF: Register_4066F0:loc_406BBF↑o
.rdata:009D4234                                         ; sub_494130:loc_49413F↑o ...
.rdata:009D4234                                 offset qt_meta_stringdata_CActivationRegisterPage, \
.rdata:009D4234                                 offset qt_meta_dataCActivationRegisterPage, \
.rdata:009D4234                                 offset CActivationRegisterPage__qt_static_metacall, 0,\
.rdata:009D4234                                 0>

CActivationOfflinePage

.rdata:00804BF0 ; class CActivationOfflinePage: CBasePage, QWidget, QObject, QPaintDevice;  [MI] (#classinformer)
.rdata:00804BF0                 dd offset const CActivationOfflinePage::`RTTI Complete Object Locator'
.rdata:00804BF4 const CActivationOfflinePage::`vftable' dd offset sub_493F30
.rdata:00804BF4                                         ; DATA XREF: sub_404590+52↑o
.rdata:00804BF4                                         ; sub_404690+25↑o
.rdata:00804BF8                 dd offset sub_493F50
.rdata:00804BFC                 dd offset sub_493FB0
.rdata:00804C00                 dd offset sub_404670
.rdata:00804C04                 dd offset QWidget::event(QEvent *)
.rdata:00804C08                 dd offset QObject::eventFilter(QObject *,QEvent *)
.rdata:00804C0C                 dd offset QObject::timerEvent(QTimerEvent *)
.rdata:00804C10                 dd offset QObject::childEvent(QChildEvent *)
.rdata:00804C14                 dd offset QObject::customEvent(QEvent *)
.rdata:00804C18                 dd offset QObject::connectNotify(QMetaMethod const &)
.rdata:00804C1C                 dd offset QObject::disconnectNotify(QMetaMethod const &)
.rdata:00804C20                 dd offset QWidget::setVisible(bool)
.rdata:00804C24                 dd offset QWidget::sizeHint(void)
.rdata:00804C28                 dd offset QWidget::minimumSizeHint(void)
.rdata:00804C2C                 dd offset QWidget::heightForWidth(int)
.rdata:00804C30                 dd offset QWidget::hasHeightForWidth(void)
.rdata:00804C34                 dd offset QWidget::mousePressEvent(QMouseEvent *)
.rdata:00804C38                 dd offset QWidget::mouseReleaseEvent(QMouseEvent *)
.rdata:00804C3C                 dd offset QWidget::mouseDoubleClickEvent(QMouseEvent *)
.rdata:00804C40                 dd offset QWidget::mouseMoveEvent(QMouseEvent *)
.rdata:00804C44                 dd offset QWidget::wheelEvent(QWheelEvent *)
.rdata:00804C48                 dd offset QWidget::keyPressEvent(QKeyEvent *)
.rdata:00804C4C                 dd offset QWidget::keyReleaseEvent(QKeyEvent *)
.rdata:00804C50                 dd offset QWidget::focusInEvent(QFocusEvent *)
.rdata:00804C54                 dd offset QWidget::focusOutEvent(QFocusEvent *)
.rdata:00804C58                 dd offset QWidget::enterEvent(QEvent *)
.rdata:00804C5C                 dd offset QWidget::leaveEvent(QEvent *)
.rdata:00804C60                 dd offset QWidget::paintEvent(QPaintEvent *)
.rdata:00804C64                 dd offset QWidget::moveEvent(QMoveEvent *)
.rdata:00804C68                 dd offset QWidget::resizeEvent(QResizeEvent *)
.rdata:00804C6C                 dd offset QWidget::closeEvent(QCloseEvent *)
.rdata:00804C70                 dd offset QWidget::contextMenuEvent(QContextMenuEvent *)
.rdata:00804C74                 dd offset QWidget::tabletEvent(QTabletEvent *)
.rdata:00804C78                 dd offset QWidget::actionEvent(QActionEvent *)
.rdata:00804C7C                 dd offset QWidget::dragEnterEvent(QDragEnterEvent *)
.rdata:00804C80                 dd offset QWidget::dragMoveEvent(QDragMoveEvent *)
.rdata:00804C84                 dd offset QWidget::dragLeaveEvent(QDragLeaveEvent *)
.rdata:00804C88                 dd offset QWidget::dropEvent(QDropEvent *)
.rdata:00804C8C                 dd offset sub_4054A0
.rdata:00804C90                 dd offset QWidget::hideEvent(QHideEvent *)
.rdata:00804C94                 dd offset QWidget::nativeEvent(QByteArray const &,void *,long *)
.rdata:00804C98                 dd offset QWidget::changeEvent(QEvent *)
.rdata:00804C9C                 dd offset QWidget::inputMethodEvent(QInputMethodEvent *)
.rdata:00804CA0                 dd offset QWidget::inputMethodQuery(Qt::InputMethodQuery)
.rdata:00804CA4                 dd offset QWidget::focusNextPrevChild(bool)
.rdata:00804CA8                 dd offset sub_404710
.rdata:00804CAC                 dd offset nullsub_19
.rdata:00804CB0                 dd offset nullsub_20
.rdata:00804CB4                 dd offset setupUI_404730
.rdata:00804CB8                 dd offset set_button_405280
.rdata:00804CBC                 dd offset Offline_Register_4054E0
.rdata:00804CC0                 dd offset sub_4054D0
.rdata:00804CC4                 dd offset sub_4054C0

CActivationOfflinePage QMetaObject__d

.rdata:009D4250 qt_meta_stringdata_CActivationOfflinePage QArrayData <0FFFFFFFFh, 16h, 0, 0E0h>
.rdata:009D4250                                         ; DATA XREF: .rdata:CActivationOfflinePage↓o
.rdata:009D4250                                         ; String: CActivationOfflinePage, alloc: 0, capRvrsd 0
.rdata:009D4260                 QArrayData <0FFFFFFFFh, 1Fh, 0, 0E7h> ; String: sigReinitActivationCompletePage, alloc: 0, capRvrsd 0
.rdata:009D4270                 QArrayData <0FFFFFFFFh, 0, 0, 0F7h> ; String: , alloc: 0, capRvrsd 0
.rdata:009D4280                 QArrayData <0FFFFFFFFh, 6, 0, 0E8h> ; String: BRRET&, alloc: 0, capRvrsd 0
.rdata:009D4290                 QArrayData <0FFFFFFFFh, 8, 0, 0DFh> ; String: QString&, alloc: 0, capRvrsd 0
.rdata:009D42A0                 QArrayData <0FFFFFFFFh, 0Dh, 0, 0D8h> ; String: eEditionType&, alloc: 0, capRvrsd 0
.rdata:009D42B0                 QArrayData <0FFFFFFFFh, 0Eh, 0, 0D6h> ; String: slotReinitPage, alloc: 0, capRvrsd 0
.rdata:009D42C0                 QArrayData <0FFFFFFFFh, 8, 0, 0D5h> ; String: strEmail, alloc: 0, capRvrsd 0
.rdata:009D42D0                 QArrayData <0FFFFFFFFh, 0Ah, 0, 0CEh> ; String: strLicense, alloc: 0, capRvrsd 0
.rdata:009D42E0                 QArrayData <0FFFFFFFFh, 0Ch, 0, 0C9h> ; String: eEditionType, alloc: 0, capRvrsd 0
.rdata:009D42F0                 QArrayData <0FFFFFFFFh, 21h, 0, 0C6h> ; String: slotActivationCodeEditTextChanged, alloc: 0, capRvrsd 0
.rdata:009D4300                 QArrayData <0FFFFFFFFh, 11h, 0, 0D8h> ; String: strActivationCode, alloc: 0, capRvrsd 0
.rdata:009D4310                 QArrayData <0FFFFFFFFh, 1Ch, 0, 0DAh> ; String: slotOfflineActivateLinkPress, alloc: 0, capRvrsd 0
.rdata:009D4320                 QArrayData <0FFFFFFFFh, 6, 0, 0E7h> ; String: strUrl, alloc: 0, capRvrsd 0
.rdata:009D4330 aCactivationoff db 'CActivationOfflinePage',0
.rdata:009D4330                                         ; DATA XREF: sub_493F50+11↑o
.rdata:009D4347 aSigreinitactiv_0 db 'sigReinitActivationCompletePage',0
.rdata:009D4367                 align 4
.rdata:009D4368 aBrret_5        db 'BRRET&',0
.rdata:009D436F aQstring_0      db 'QString&',0
.rdata:009D4378 aEeditiontype_2 db 'eEditionType&',0
.rdata:009D4386 aSlotreinitpage_0 db 'slotReinitPage',0
.rdata:009D4395 aStremail       db 'strEmail',0
.rdata:009D439E aStrlicense_0   db 'strLicense',0
.rdata:009D43A9 aEeditiontype_3 db 'eEditionType',0
.rdata:009D43B6 aSlotactivation db 'slotActivationCodeEditTextChanged',0
.rdata:009D43D8 aStractivationc db 'strActivationCode',0
.rdata:009D43EA aSlotofflineact db 'slotOfflineActivateLinkPress',0
.rdata:009D4407 aStrurl_0       db 'strUrl',0
.rdata:009D440E                 align 10h
.rdata:009D4410 qt_meta_dataCActivationOfflinePage QMetaObjectPrivate <7, 0, 0, 0, 4, 0Eh, 0, 0, 0, 0, 0, 0, 0, 1>
.rdata:009D4410                                         ; DATA XREF: .rdata:CActivationOfflinePage↓o
.rdata:009D4410                                         ; CLASS: CActivationOfflinePage
.rdata:009D4410                                         ; MethodCount: 4 PropertyCount: 0 EnumCount: 0
.rdata:009D4410                                         ; ConstructorCount: 0 SignalCount: 1
.rdata:009D4448                 QMetaMethod <1, 4, 22h, 2, 6> ; SIGNAL Public Void sigReinitActivationCompletePage(BRRET& , QString& , QString& , eEditionType& )
.rdata:009D445C                 QMetaMethod <6, 3, 2Bh, 2, 8> ; SLOT Private Void slotReinitPage(QString& strEmail, QString& strLicense, eEditionType& eEditionType)
.rdata:009D4470                 QMetaMethod <0Ah, 1, 32h, 2, 8> ; SLOT Private Void slotActivationCodeEditTextChanged(QString strActivationCode)
.rdata:009D4484                 QMetaMethod <0Ch, 1, 35h, 2, 8> ; SLOT Private Void slotOfflineActivateLinkPress(QString strUrl)
.rdata:009D4498                 dd 2Bh                  ; Void
.rdata:009D449C                 dd 80000003h            ; BRRET&
.rdata:009D44A0                 dd 80000004h            ; QString&
.rdata:009D44A4                 dd 80000004h            ; QString&
.rdata:009D44A8                 dd 80000005h            ; eEditionType&
.rdata:009D44AC                 dd 2
.rdata:009D44B0                 dd 2
.rdata:009D44B4                 dd 2
.rdata:009D44B8                 dd 2
.rdata:009D44BC                 dd 2Bh                  ; Void
.rdata:009D44C0                 dd 80000004h            ; QString&
.rdata:009D44C4                 dd 80000004h            ; QString&
.rdata:009D44C8                 dd 80000005h            ; eEditionType&
.rdata:009D44CC                 dd 7                    ; strEmail
.rdata:009D44D0                 dd 8                    ; strLicense
.rdata:009D44D4                 dd 9                    ; eEditionType
.rdata:009D44D8                 dd 2Bh                  ; Void
.rdata:009D44DC                 dd 0Ah                  ; QString
.rdata:009D44E0                 dd 0Bh                  ; strActivationCode
.rdata:009D44E4                 dd 2Bh                  ; Void
.rdata:009D44E8                 dd 0Ah                  ; QString
.rdata:009D44EC                 dd 0Dh                  ; strUrl
.rdata:009D44F0                 db    0
.rdata:009D44F1                 db    0
.rdata:009D44F2                 db    0
.rdata:009D44F3                 db    0
.rdata:009D44F4 CActivationOfflinePage QMetaObject__d <offset CBasePage, \
.rdata:009D44F4                                         ; DATA XREF: Offline_Register_4054E0+2A8↑o
.rdata:009D44F4                                         ; sub_493F30:loc_493F3F↑o ...
.rdata:009D44F4                                 offset qt_meta_stringdata_CActivationOfflinePage, \
.rdata:009D44F4                                 offset qt_meta_dataCActivationOfflinePage, \
.rdata:009D44F4                                 offset CActivationOfflinePage__qt_static_metacall, 0, \
.rdata:009D44F4                                 0>

check

注册码

Register_4066F0

image-20240928181713392

image-20240928182200242

check_rsa_pubk_dec_49B2C0

DWORD __cdecl check_rsa_pubk_dec_49B2C0(char *out, wchar_t *Sourcea, int a3)
{// [COLLAPSED LOCAL DECLARATIONS. PRESS KEYPAD CTRL-"+" TO EXPAND]v4 = v3;memset(Dest, 0, 0x31);memset(data, 0, 0x1F);v5 = wcslen(v3);if ( Sourcea && wcslen(Sourcea) == 0x30 && v4 && v5 ){v6 = (char *)malloc(v5 + 1);String = v6;if ( v6 ){if ( v5 == wcstombs(v6, v4, v5 + 1) ){_strupr(String);if ( wcstombs(Dest, Sourcea, 0x31u) == 0x30 ){_strupr(Dest);LastError = xxb32_decode_49B190((int)data, (int)Dest);if ( (_WORD)v12 ){log_4B0FD0((int)L"%S %d nRet=0x%016llX\n", ".\\License.cpp", 0x2A0, LastError, v12);}else{LastError = rsa_dec_49AFD0(data, (int)out, a3);if ( v13 ){log_4B0FD0((int)L"%S %d nRet=0x%016llX\n", ".\\License.cpp", v16, v17, 0x2A7);}else{v14 = out[0x1D];out[0x1D] = 0;if ( v14 != (unsigned __int8)crc8_49B7E0(0, (unsigned __int8 *)out) ){LastError = GetLastError();log_4B0FD0((int)L"%S %d nRet=0x%016llX\n", ".\\License.cpp", v16, v17, 0x2B0);}}}}else{v11 = GetLastError() + 0x297000E00000000i64;LastError = v11;log_4B0FD0((int)L"%S %d nRet=0x%016llX\n", ".\\License.cpp", 0x298, v11);}}else{v10 = GetLastError() + 0x28F000E00000000i64;LastError = v10;log_4B0FD0((int)L"%S %d nRet=0x%016llX\n", ".\\License.cpp", 0x290, v10);}}else{v8 = GetLastError() + 0x289000300000000i64;LastError = v8;log_4B0FD0((int)L"%S %d nRet=0x%016llX\n", ".\\License.cpp", 0x28A, v8);}if ( String )free(String);}else{v15 = GetLastError() + 0x28101F100000000i64;LastError = v15;log_4B0FD0((int)L"%S %d nRet=0x%016llX\n", ".\\License.cpp", 0x282, v15);}return LastError;
}

rsa_dec_49AFD0

int __thiscall rsa_dec_49AFD0(void *data, int out, unsigned __int8 a3)
{// [COLLAPSED LOCAL DECLARATIONS. PRESS KEYPAD CTRL-"+" TO EXPAND]v3 = 0;memset(v14, 0, 0x1000u);v4 = "-----BEGIN RSA PUBLIC KEY-----\n""MCYCHwC9s2qhNcaeKtlin3VtwnU9Vv4x/j0wBPS43F/8eKMCAwEAAQ==\n""-----END RSA PUBLIC KEY-----\n";if ( a3 >= 6u )v4 = "-----BEGIN RSA PUBLIC KEY-----\n""MCYCHwClu0T8p4bIbBbZW+PHRMA3XqSZ3+smlgw2JdmLMuUCAwEAAQ==\n""-----END RSA PUBLIC KEY-----\n";qmemcpy(v14, v4, 0x75u);v5 = BIO_new_mem_buf(v14, 0x75);v6 = v5;if ( v5 ){bio = PEM_read_bio_(v5, 0, 0, 0);v9 = bio;if ( bio ){if ( RSA_eay_public_decrypt_71AEE0(30, (int)data, out, (int)bio) < 0 ){v11 = GetLastError() + 0x13D000200000000i64;v3 = v11;log_4B0FD0((int)L"%S %d nRet=0x%016llX\n", ".\\License.cpp", 0x13E, v11);}}else{v10 = GetLastError() + 0x135007200000000i64;v3 = v10;log_4B0FD0((int)L"%S %d nRet=0x%016llX\n", ".\\License.cpp", 0x136, v10);}BIO_free_all(v6);if ( v9 )RSA_free(v9);}else{v7 = GetLastError() + 0x12D000300000000i64;v3 = v7;log_4B0FD0((int)L"%S %d nRet=0x%016llX\n", ".\\License.cpp", 0x12E, v7);}CRYPTO_cleanup_all_ex_data();return v3;
}

激活码

.rdata:009F15BC ; class CActiveOnline: IActiveOnlineEx, IActiveOnline, IActiveOnlineBase;   (#classinformer)
.rdata:009F15BC                 dd offset const CActiveOnline::`RTTI Complete Object Locator'
.rdata:009F15C0 const CActiveOnline::`vftable' dd offset sub_56CB20
.rdata:009F15C0                                         ; DATA XREF: CActiveOnline_56C8E0+37↑o
.rdata:009F15C0                                         ; sub_56C9F0+26↑o
.rdata:009F15C4                 dd offset sub_56C5A0
.rdata:009F15C8                 dd offset sub_56C5B0
.rdata:009F15CC                 dd offset sub_570300
.rdata:009F15D0                 dd offset sub_570400
.rdata:009F15D4                 dd offset sub_5704A0
.rdata:009F15D8                 dd offset sub_570460
.rdata:009F15DC                 dd offset check_activation_570C40
.rdata:009F15E0                 dd offset sub_570BF0
.rdata:009F15E4                 dd offset sub_571300
.rdata:009F15E8                 dd offset sub_571370
.rdata:009F15EC                 dd offset sub_571390
.rdata:009F15F0                 dd offset sub_571730
.rdata:009F15F4                 dd offset sub_5718A0

check_activation_570C40

int __thiscall check_activation_570C40(_DWORD *this, void *Source, int a3)
{// [COLLAPSED LOCAL DECLARATIONS. PRESS KEYPAD CTRL-"+" TO EXPAND]v40 = this;*(_DWORD *)v69 = 7;v68 = 0;LOWORD(v66) = 0;v88 = 6;v46 = 7;v45 = 0;LOWORD(String[0]) = 0;v50 = 7;v49 = 0;LOWORD(lpWideCharStr) = 0;v54 = 7;v53 = 0;LOWORD(v52) = 0;v61 = 7;v60 = 0;LOWORD(v59) = 0;_Ptr = 0;memset(v87, 0, sizeof(v87));v71 = 0;v72 = 0;v73 = 0;v79 = 0;v80 = 0;v81 = 0;v82 = 0;v83 = 0;v84 = 0;v85 = 0;v75 = 0;*(_DWORD *)v76 = 0;v77 = 0;MultiByteStr = 0;v78 = 0;v74 = 0;v64 = 0xF;v63 = 0;LOBYTE(v62) = 0;v57 = 0xF;v56 = 0;LOBYTE(v55) = 0;v41 = operator new(1u);LOBYTE(v88) = 7;if ( this[2] ){if ( Source ){if ( a3 ){sub_411430(v65, Source, wcslen((const unsigned __int16 *)Source));v39 = sub_5782F0((int)(this + 0x14), v65, (int)v65);if ( (v39 & 0xFFF) == 0 ){v36 = &v58;v35 = (int)&v51;v39 = (int)&v28;sub_4105B0(v65, (int)&v28);// split '|'v35 = sub_571A10((int)v47, (int)v43, v28, v29, v30, v31, v32, v33, v34, v35, (int)v36);if ( (v35 & 0xFFF) == 0 ){v4 = v42[0];if ( v42[5] < (wchar_t *)8 )v4 = (const wchar_t *)v42;if ( (unsigned int)(wcstol(v4, 0, 0x10) - 0x8000) > 0x11 )v35 = 0x2E601001;elsev35 = sub_572410();if ( (v35 & 0xFFF) == 0 ){v5 = v36;v6 = v36 + 0x48;if ( sub_4BA960((int)(v36 + 0x48)) ){if ( v45 == 8 || v49 == 8 ){v7 = String[0];if ( v46 < 8 )v7 = (const WCHAR *)String;WideCharToMultiByte(0, 0, v7, 0xFFFFFFFF, v65, 0xA, 0, 0);p_lpWideCharStr = lpWideCharStr;if ( v50 < 8 )p_lpWideCharStr = (const WCHAR *)&lpWideCharStr;WideCharToMultiByte(0, 0, p_lpWideCharStr, 0xFFFFFFFF, v67, 0xA, 0, 0);if ( (unsigned int)v5[0x47] < 8 )v9 = (const WCHAR *)(v5 + 0x42);elsev9 = (const WCHAR *)v5[0x42];WideCharToMultiByte(0, 0, v9, 0xFFFFFFFF, &v76[3], 0x40, 0, 0);if ( (unsigned int)v6[6] < 8 )v10 = (const WCHAR *)(v6 + 1);elsev10 = (const WCHAR *)v6[1];WideCharToMultiByte(0, 0, v10, 0xFFFFFFFF, v69, 0x18, 0, 0);v37 = &v23;std::string::string((std::string *)&v23, &v76[3]);v11 = (const std::string *)sub_577E00(v38, v23, v24, v25, v26, v27, v28, (int)v29);v87[0x2F] = 8;std::string::assign((std::string *)&v58, v11, 0, 0xFFFFFFFF);v87[0x2F] = 7;std::string::~string((int)v38);v37 = &v23;std::string::string((std::string *)&v23, v69);v12 = (const std::string *)sub_577E00(v38, v23, v24, v25, v26, v27, v28, (int)v29);v87[0x2F] = 9;std::string::assign((std::string *)&v51, v12, 0, 0xFFFFFFFF);v87[0x2F] = 7;std::string::~string((int)v38);v13 = std::string::substr((std::string *)8, (std::string *)8, v30, v31);if ( *((_DWORD *)v13 + 6) < 0x10u )v14 = (char *)v13 + 4;elsev14 = (const char *)*((_DWORD *)v13 + 1);v15 = strcmp(v14, v65);std::string::~string((int)v38);if ( v15 ){v35 = 0x14B01003;}else{v19 = std::string::substr((std::string *)8, (std::string *)8, v30, v31);if ( *((_DWORD *)v19 + 6) < 0x10u )v20 = (char *)v19 + 4;elsev20 = (const char *)*((_DWORD *)v19 + 1);v21 = strcmp(v20, v67);std::string::~string((int)v38);if ( v21 )v35 = 0x14C01003;}}else{v35 = 0x14401003;}}else{v35 = 0x1420100B;}}}}}else{v39 = 0x12801002;}}else{v39 = 0x12701002;}}else{v39 = 0x12501004;}sub_56D4D0();v16 = v39;v17 = (wchar_t **)String[0];if ( (v39 & 0xFFF) != 0 ){if ( v46 < 8 )v17 = String;v36 = (int *)v17;LastError = GetLastError();sub_575C20(L"[A] AutoActive failed! uReturn = %x SysErr = %d wsStatus = %s", v16, LastError);}else{if ( v46 < 8 )v17 = String;sub_575C20(L"[A] AutoActive success. wsStatus = %s", v17);}operator delete(v41);if ( v57 >= 0x10 )operator delete(v55);v57 = 0xF;v56 = 0;LOBYTE(v55) = 0;if ( v64 >= 0x10 )operator delete(v62);v64 = 0xF;v63 = 0;LOBYTE(v62) = 0;if ( v61 >= 8 )operator delete(v59);v61 = 7;v60 = 0;LOWORD(v59) = 0;if ( v54 >= 8 )operator delete((void *)v52);v54 = 7;v53 = 0;LOWORD(v52) = 0;if ( v50 >= 8 )operator delete((void *)lpWideCharStr);v50 = 7;v49 = 0;LOWORD(lpWideCharStr) = 0;if ( v46 >= 8 )operator delete(String[0]);v46 = 7;v45 = 0;LOWORD(String[0]) = 0;if ( *(_DWORD *)v69 >= 8u )operator delete(v66);return v39;
}

测试

image-20240928172515004

image-20240928172527653

image-20240928172551345

py

'''
pip install pycryptodome
'''
import base64
import ctypes
import io
import os
import random
from typing import Union
from Crypto.PublicKey import RSA
from Crypto.Util.number import inverseimport hashlib
import time
from datetime import datetimedef convert_to_time64(time_str):# 解析时间字符串为 datetime 对象dt_obj = datetime.strptime(time_str, r"%Y-%m-%d %H:%M:%S")# 将 datetime 对象转换为时间戳timestamp = dt_obj.timestamp()# # 将时间戳转换为 _time64 格式# time64 = int(timestamp * 1e7)  # 1e7 是将秒转换为 100 纳秒的单位time64 = int(timestamp)return time64def convert_to_time_string(time64):# 将 _time64 格式的时间戳转换为秒数# timestamp = time64 / 1e7  # 将 100 纳秒转换为秒# 使用 fromtimestamp 将秒数转换为 datetime 对象dt_obj = datetime.fromtimestamp(time64)# 使用 strftime 方法将 datetime 对象格式化为时间字符串time_str = dt_obj.strftime("%Y-%m-%d %H:%M:%S")return time_strpubk = "-----BEGIN RSA PUBLIC KEY-----\n"\"MCYCHwC9s2qhNcaeKtlin3VtwnU9Vv4x/j0wBPS43F/8eKMCAwEAAQ==\n"\"-----END RSA PUBLIC KEY-----\n"def rsa_pk_enc(data: bytes) -> bytes:# http://factordb.com/index.php?query=1309267119417726280330942057320079958095363483536018220587938405183944867# e=65537p = 1138829745998159918316484590691394789q = 1149660099780921729474053823339894503n = p*q# phi = (p - 1) * (q - 1)# d = inverse(e, phi)# print(d)d = 461760535243012729352417637561931856791126802617053449862506727428818545t = int.from_bytes(data, 'big')x = pow(t, d, n)bs = i2bs(x)# print(x)# print(bs,bs.hex())return bs# from rsa import PublicKey, common, transform, core
# def rsa_pubkey_dec(cipher:bytes, PUBLIC_KEY:bytes=pubk.encode()):
#         public_key = PublicKey.load_pkcs1(PUBLIC_KEY)
#         encrypted = transform.bytes2int(cipher)
#         print('e:',public_key.e)
#         print('n:',public_key.n)
#         decrypted = core.decrypt_int(encrypted, public_key.e, public_key.n)
#         print('rsa_pubkey_dec result:',decrypted)
#         text = transform.int2bytes(decrypted)
#         return texttable = [0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F,0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F,0x6B, 0x79, 0x6E, 0x6A, 0x41, 0x34, 0x45, 0x48, 0x78, 0x36, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F,0x40, 0x63, 0x4E, 0x57, 0x32, 0x7A, 0x6C, 0x53, 0x58, 0x4C, 0x59, 0x30, 0x64, 0x75, 0x77, 0x44,0x6F, 0x51, 0x70, 0x56, 0x46, 0x7C, 0x61, 0x37, 0x38, 0x5A, 0x62, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F,0x60, 0x39, 0x67, 0x65, 0x43, 0x74, 0x69, 0x73, 0x50, 0x6D, 0x68, 0x72, 0x66, 0x4F, 0x31, 0x33,0x55, 0x4B, 0x42, 0x35, 0x4D, 0x49, 0x54, 0x76, 0x71, 0x47, 0x4A, 0x7B, 0x52, 0x7D, 0x7E, 0x7F]def s_transform(s: str):ret = ''for x in s:ret += chr(table[ord(x)])return retdef re_transfrom(s: str):ret = ''for x in s:ret += chr(table.index(ord(x)))return retdef i2bs(m: int, byteorder='big'):hex_m = m.to_bytes((m.bit_length() + 7) // 8, byteorder=byteorder)return hex_mdef rsa_pub_dec(decoded_data: bytes, PUBLIC_KEY: bytes = pubk.encode()) -> bytes:# base64.b64decode("MCYCHwC9s2qhNcaeKtlin3VtwnU9Vv4x")public_key = RSA.import_key(PUBLIC_KEY)# 获取模数和公钥指数n = public_key.ne = public_key.e# 打印结果print("Modulus (n):", n)# bs_n=n.to_bytes(128,'big')# print(bs_n,bs_n.hex())print("Exponent (e):", e)c = int.from_bytes(decoded_data, 'big')m = pow(c, e, n)print('pow:', m)hex_m = i2bs(m)return hex_mclass CustomBase32Codec:def __init__(self, custom_alphabet='ABCDEFGHJKLMNPQRSTUVWXYZ23456789'):if len(custom_alphabet) != 32:raise ValueError("Custom alphabet must contain 32 characters.")# Standard Base32 alphabetstandard_alphabet = b'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'# Create translation tablesself.encode_trans = bytes.maketrans(standard_alphabet, custom_alphabet.encode())self.decode_trans = bytes.maketrans(custom_alphabet.encode(), standard_alphabet)def encode(self, data):if isinstance(data, str):data = data.encode('utf-8')# Use the standard base64 library to encode and then translate to custom alphabetencoded = base64.b32encode(data)return encoded.translate(self.encode_trans)def decode(self, data):if isinstance(data, str):data = data.encode('utf-8')# Translate from custom alphabet to standard and then decode using standard base64 librarystandard_encoded = data.translate(self.decode_trans)return base64.b32decode(standard_encoded)def reflect_data(x, width):# See: https://stackoverflow.com/a/20918545if width == 8:x = ((x & 0x55) << 1) | ((x & 0xAA) >> 1)x = ((x & 0x33) << 2) | ((x & 0xCC) >> 2)x = ((x & 0x0F) << 4) | ((x & 0xF0) >> 4)elif width == 16:x = ((x & 0x5555) << 1) | ((x & 0xAAAA) >> 1)x = ((x & 0x3333) << 2) | ((x & 0xCCCC) >> 2)x = ((x & 0x0F0F) << 4) | ((x & 0xF0F0) >> 4)x = ((x & 0x00FF) << 8) | ((x & 0xFF00) >> 8)elif width == 32:x = ((x & 0x55555555) << 1) | ((x & 0xAAAAAAAA) >> 1)x = ((x & 0x33333333) << 2) | ((x & 0xCCCCCCCC) >> 2)x = ((x & 0x0F0F0F0F) << 4) | ((x & 0xF0F0F0F0) >> 4)x = ((x & 0x00FF00FF) << 8) | ((x & 0xFF00FF00) >> 8)x = ((x & 0x0000FFFF) << 16) | ((x & 0xFFFF0000) >> 16)else:raise ValueError('Unsupported width')return xdef crc_poly(data, n, poly, crc=0, ref_in=False, ref_out=False, xor_out=0):g = 1 << n | poly  # Generator polynomial# Loop over the datafor d in data:# Reverse the input byte if the flag is trueif ref_in:d = reflect_data(d, 8)# XOR the top byte in the CRC with the input bytecrc ^= d << (n - 8)# Loop over all the bits in the bytefor _ in range(8):# Start by shifting the CRC, so we can check for the top bitcrc <<= 1# XOR the CRC if the top bit is 1if crc & (1 << n):crc ^= g# Reverse the output if the flag is trueif ref_out:crc = reflect_data(crc, n)# Return the CRC valuereturn crc ^ xor_outdef CRC8_MAXIM(data: bytes):crc8 = crc_poly(data, n=8, poly=0x31, ref_in=True, ref_out=True, xor_out=0)return crc8def convert_bytes_to_structure(st: object, byte: bytes):assert ctypes.sizeof(st) == len(byte), 'size error! need:%d,give:%d' % (ctypes.sizeof(st), len(byte))# ctypes.memmove(ctypes.pointer(st), byte, ctypes.sizeof(st))ctypes.memmove(ctypes.addressof(st), byte, ctypes.sizeof(st))class TYPE_BASE(ctypes.LittleEndianStructure):_pack_: int = 1def __init__(self, data: Union[bytes, list, tuple, set]) -> None:if isinstance(data, bytes):convert_bytes_to_structure(self, data)elif isinstance(data, (list, tuple, set)):convert_bytes_to_structure(self, bytes(data))elif isinstance(data, io.IOBase):data.readinto(self)'''
struct LicenseInfo{char var0;char var1;char major_version2;char var3;int expiration4;char var8;char unknow9[7];char var10;char var11;char unknow12[11];char crc1d;};
'''class LicenseInfo(TYPE_BASE):# _pack_: int = 1_fields_: list = [("var0", ctypes.c_ubyte),("var1", ctypes.c_ubyte),("major_version2", ctypes.c_ubyte),("var3", ctypes.c_ubyte),("expiration4", ctypes.c_uint32),("var8", ctypes.c_ubyte),("unknow9", ctypes.c_byte*7),("var10", ctypes.c_ubyte),("var11", ctypes.c_ubyte),("unknow12", ctypes.c_byte*11),("crc1d", ctypes.c_ubyte),]def __init__(self, data: Union[bytes, list, tuple, set]) -> None:super().__init__(data)self.get_var()def get_var(self):if (self.var8 & 0xf) != 0:if (self.var8 & 0xf) == 1 or (self.var8 & 0xf) == 2:self.ver2 = self.var0self.ver1 = self.var10else:self.ver2 = self.var0 & 0x1fself.ver1 = self.var0 >> 5def __str__(self) -> str:info = ''info += 'ver1:%02x\n' % self.ver1info += 'ver2:%02x\n' % self.ver2info += 'major_version2:%02x\n' % self.major_version2info += 'var3:%02x\n' % self.var3info += 'expiration4:%s\n' % convert_to_time_string(self.expiration4)info += 'var8:%02x\n' % self.var8info += 'unknow9:%s\n' % bytes(self.unknow9)info += 'var10:%02x\n' % self.var10info += 'var11:%02x\n' % self.var11info += 'unknow12:%s\n' % bytes(self.unknow12)info += 'crc1d:%02x\n' % self.crc1dreturn infodef parse_license(data: bytes):custom_b32 = CustomBase32Codec()decoded_data = custom_b32.decode(data)# need FA8F3EFD9308B22C6B57B07291068F99D59A8E64B858042D1CF6#      5d438f96fa8f3efd9308b22c6b57b07291068f99d59a8e64b858042d1cf6print("Custom Base32 Decoded:", decoded_data)print('hex:', decoded_data.hex())# enc=custom_b32.encode(b'SUPPORT@HASLEO.COM')# print('enc:',enc)# text=rsa_pubkey_dec(decoded_data)text = rsa_pub_dec(decoded_data)print('rsa_pubkey_dec:', text)print('rsa_pubkey_dec hex:', text.hex())enc = rsa_pk_enc(text)print('test enc:', enc, enc.hex())# rsa_dec=bytes.fromhex('210102000AA5325610004C4A41434FEB07699B0BD58FBD6A616AE7ED19')rsa_dec = text[:-1]+b'\x00'# CRC-8/MAXIMcrc8 = CRC8_MAXIM(rsa_dec)print('crc8/MAXIM :', crc8, hex(crc8))obj = LicenseInfo(text)print(str(obj))# 示例用法# time_str = "2024-01-01 12:00:00"# time64 = convert_to_time64(time_str)# print('time64:',time64)def GenActivationCode(license, machine_code) -> str:lic_md5 = hashlib.md5(license).hexdigest()# print('lic_md5:',lic_md5)mc_md5 = hashlib.md5(machine_code).hexdigest()# print('mc_md5:',mc_md5)s = '8000|%s|%s|%s' % (lic_md5[8:16], mc_md5[8:16], machine_code.decode())# print(s)re_s = re_transfrom(s)# print(re_s)return re_sdef GenLicense(ver2=1) -> bytes:lic = b''#ver2 = 1ver1 = 1  # random.randint(1,4)lic += (ver2 | (ver1 << 5)).to_bytes(1, 'little')  # this way var8  must 0lic += b'\x01'  # var1lic += b'\xff'  # major_version2lic += b'\x00'  # var3expiration4 = convert_to_time64('2077-01-01 12:00:00')t = convert_to_time_string(expiration4)# print(t)lic += expiration4.to_bytes(4, 'little')var8 = b'\x00'lic += var8lic += os.urandom(7)  # unknow9[7]lic += b'\x00'  # var10lic += b'\xff'  # var11  monthlic += os.urandom(11)  # unknow12[11]crc8 = CRC8_MAXIM(lic+b'\x00')lic += crc8.to_bytes(1, 'little')# print('lic:',lic,lic.hex())# print(str(LicenseInfo(lic)))enc = rsa_pk_enc(lic)license = CustomBase32Codec().encode(enc)return licenseclass Products:EASYUEFI=1WINTOUSB=2if __name__ == "__main__":print('[#]Must be used without internet access!')license = GenLicense(Products.WINTOUSB)print('License:', license.decode())print('Please input MachineCode:')mc = input().encode()ac = GenActivationCode(license, mc)print('ActivationCode', ac)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/805332.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

结对项目:自动生成小学四则运算题目

这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/CSGrade22-34这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/homework/13230这个作业的目标 结对实现一个自动生成小学四则运算题目的命令行程序项目一、项目开发人员以及仓库地址 1、开发人…

【漏洞分析】20240507-SATURN:当闪电贷遇上有缺陷的通缩机制

背景信息 2024 年 5 月 6 日,SATURN 代币遭受价格操控攻击,损失 15 BNB。攻击发生的原因是由于 SATURN 代币的代币通缩机制设计不合理,使得攻击者可以通过燃烧池子中的 SATURN 代币来操控价格完成获利。项目社媒:https://x.com/Saturn_POM 社媒告警:https://twitter.com/C…

卫生纸国家标准查询 All In One

卫生纸国家标准查询 All In One 强制标准 推荐标准 指导性技术文件卫生纸国家标准查询 All In One国家标准全文公开系统强制标准 推荐标准 指导性技术文件 demos卫生纸 808080序号 标准号 是否采标 标准名称 状态 发布日期 实施日期1 GB/T 20808-2022纸巾 现行 2022-04-15 2023…

ai换脸工具roop 食用教程

1. 准备工作 开源项目地址 https://github.com/s0md3v/roop说明文档 https://docs.facefusion.io/usage/cli-argumentspython环境安装必须是python3.10版本 2 部署 git clone仓库 git clone https://github.com/s0md3v/roop.git2.1 conda创建虚拟环境 conda create -n env_name…

C# ASP.NET Core Web API 框架 实现向手机发送验证码短信

本文章主要是在C# ASP.NET Core Web API框架实现向手机发送验证码短信功能。这里我选择是一个互亿无线短信验证码平台,其实像阿里云,腾讯云上面也可以。首先我们先去 互亿无线 https://www.ihuyi.com/api/sms.html 去注册一个账号 注册完成账号后,它会送10条免费短信以及通…

WFUZZ模糊测试

WFUZZ模糊测试 使用指南 选项: -h/--help :这个帮助 --help : 高级帮助 --filter-help : 过滤语言规范 --version : Wfuzz 版本详细信息 -e <type> :可用编码器/有效负载/…

2. 两数相加题解

题目描述 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例 1:输入:l1 = [2,4,3]…

一些cookie的知识点

cookie属性: 1.domain:指定了cookie应该被发送到哪些域,默认情况下,cookie只会被发送到设置它的那个域。可以设置更广泛的域,比如 .example.com,这样所有子域都可以访问这个cookie。这里我们简单来了解一下域名和子域名。子域名定义:子域名是在域名前面添加的一个前缀,…

Himax 10.36寸 incell触摸调试

触摸是带笔的,数据比较大,用的是spi接口。一、添加驱动:drivers/input/touchscreen/hxchipset二、dts配置&spi4 {status = "okay";pinctrl-0 = <&spi4m1_cs0 &spi4m1_cs1 &spi4m1_pins>;himax_touch@0 {compatible = "himax,hxcommon&…

加塞

加塞 rnk7,\(100+30+10+15=155\)。 题目来源:2022 牛客 OI 赛前集训营-提高组(第三场) T1 一般图最小匹配 说的很复杂,实际水题。就是从 \(n\) 个数中选 \(2m\) 个数,两个两个求差后,求这个差的和的最小值。 显然排序之后求差是最小的,但显然不能直接贪心,考虑 DP。 先…

『模拟赛』CSP-S模拟6

『模拟赛记录』CSP-S模拟6Rank 一般 恼了怎么又狠狠挂分啊啊啊啊A. 一般图最小匹配 签。(这么多天终于签上了是吧) 结论是,跟图完全没关系。题意转换完就是从 \(n\) 个数中选出 \(m\) 对差的绝对值之和最小的数。显然我们选的每一对数都应该是这 \(n\) 个数中相邻的一组,so…