HEdit 2.0 的註冊破解過程 <<-------可能過時了高手末入 (8千字)
HEdit 2.0 的註冊破解過程
Hedit 2.0 by Yuri Software
cracck by PcRocker(本文不得用於任何商業用途,轉載時請保持完整性)
功能: 檔案編輯器
最新版本: 不詳
下載地址: 不詳
最近的破解沒什麼進展,主要是碰到的APP都是用上網註冊的方式,很難找到註冊碼,頭都大了 :-(
無奈之下,只有挑軟柿子捏了,大家不要笑我。
給程式打補丁當然少不了檔案編輯器,如果你只為修改檔案HEdit是相當好用的:優點是程式本身很小,不管檔案有多大,開啟的都非常快;缺點是執行一次以後,它會將自己作為所有的無程式關聯檔案的預設開啟方式。
破解工具是SOFT-ICE,寫手記的工具嘛當然是 W32DASM。
該APP的試用期到了之後,啟動時出現過期的對話方塊,要求輸入註冊碼,當註冊資訊錯誤時,就告訴你錯啦(還好,一聲不響的讓人心裡沒底)。話不多說,開始。
在S―ICE中下 BPX MESSAGEBOXA,註冊失敗後按3次F12攔截如下:
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00405047(C)
|
:00405064 B801000000 mov eax,
00000001
:00405069 5E
pop esi
:0040506A C3
ret
:0040506B 56
push esi <----
這種“天外飛仙”的呼叫好象經常出現
:0040506C 57
push edi
:0040506D 8BF1
mov esi, ecx
:0040506F E808AE0200 call
0042FE7C
:00405074 8B7804
mov edi, dword ptr [eax+04]
:00405077 6A01
push 00000001
:00405079 8BCE
mov ecx, esi
:0040507B E870890100 call
0041D9F0
:00405080 85C0
test eax, eax
:00405082 7435
je 004050B9
:00405084 FF7660
push [esi+60]
:00405087 FF765C
push [esi+5C]
:0040508A 8BCF
mov ecx, edi
:0040508C E82DEFFFFF call
00403FBE <---- 這個CALL是關鍵,看下面的分析
:00405091 85C0
test eax, eax <---- EAX=0 表示失敗,比較少見
:00405093 7510
jne 004050A5 <---- 如果不跳,讓你死的好看
:00405095 6AFF
push FFFFFFFF
:00405097 6A00
push 00000000
* Possible Reference to Dialog: DialogID_0088
|
* Possible Reference to String Resource ID=00136: "The user name and/or registration
number you entered are inc"
|
:00405099 6888000000 push
00000088
:0040509E E8BCFC0100 call
00424D5F <---- 顯示出錯的訊息框
:004050A3 EB14
jmp 004050B9 <---- 你會停在這裡
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00405093(C)
|
:004050A5 FF7660
push [esi+60]
:004050A8 FF765C
push [esi+5C]
:004050AB 8BCF
mov ecx, edi
:004050AD E8CFEEFFFF call
00403F81
:004050B2 8BCE
mov ecx, esi
:004050B4 E86A5A0100 call
0041AB23
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00405082(C), :004050A3(U)
|
:004050B9 5F
pop edi
:004050BA 5E
pop esi
:004050BB C3
ret
這裡是計算與比較註冊碼的 call 403FBE:
* Referenced by a CALL at Addresses:
|:00403A3D , :00403CDE , :00403E07 , :0040508C
|
:00403FBE 55
push ebp
:00403FBF 8BEC
mov ebp, esp
:00403FC1 81EC00010000 sub esp, 00000100
:00403FC7 6800010000 push
00000100
:00403FCC 8D8D00FFFFFF lea ecx, dword
ptr [ebp+FFFFFF00]
:00403FD2 FF7508
push [ebp+08]
:00403FD5 51
push ecx
:00403FD6 E8054F0000 call
00408EE0 <----
將註冊姓名放在 [EBP-100]
:00403FDB 83C40C
add esp, 0000000C <----
到[EBP]的剩餘位元組以 00 填充
:00403FDE 8D8D00FFFFFF lea ecx, dword
ptr [ebp+FFFFFF00]
:00403FE4 51
push ecx
:00403FE5 E856200100 call
00416040 <----
將註冊姓名轉為大寫,見下面
:00403FEA 83C404
add esp, 00000004
:00403FED B904000000 mov ecx,
00000004
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00404015(C)
|
:00403FF2 8BC1
mov eax, ecx
:00403FF4 41
inc ecx
:00403FF5 99
cdq
<---- 相當於 MOV EDX,00
:00403FF6 33C2
xor eax, edx <----
:00403FF8 2BC2
sub eax, edx <----
:00403FFA 83E003
and eax, 00000003 <----
這幾個語句使EAX按順序取0、1、2、3
:00403FFD 33C2
xor eax, edx <----
:00403FFF 2BC2
sub eax, edx <----
:00404001 8A940DFFFEFFFF mov dl, byte ptr
[ebp+ecx-00000101] <---- 從第五個位元組開始取一個位元組
:00404008 30940500FFFFFF xor byte ptr [ebp+eax-00000100],
dl <---- 與前四個位元組中的一個取異或
:0040400F 81F900010000 cmp ecx, 00000100
<---- 註冊姓名最長為255個位元組
:00404015 7CDB
jl 00403FF2
:00404017 8B8500FFFFFF mov eax, dword
ptr [ebp+FFFFFF00] <---- 結果送EAX
:0040401D 85C0
test eax, eax
:0040401F 7D02
jge 00404023
:00404021 F7D8
neg eax
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040401F(C)
|
:00404023 39450C
cmp dword ptr [ebp+0C], eax <----
與輸入的數字簡單的比較
:00404026 7509
jne 00404031
:00404028 85C0
test eax, eax
:0040402A B801000000 mov eax,
00000001
:0040402F 7502
jne 00404033
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00404026(C)
|
:00404031 33C0
xor eax, eax <----
EAX=0 就錯了
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040402F(C)
|
:00404033 8BE5
mov esp, ebp
:00404035 5D
pop ebp
:00404036 C20800
ret 0008
這個CALL是將小寫字母轉為大寫,彙編很熟的就略過吧。
* Referenced by a CALL at Address:
|:00403FE5
|
:00416040 83EC04
sub esp, 00000004
:00416043 53
push ebx
:00416044 56
push esi
:00416045 57
push edi
:00416046 55
push ebp
:00416047 33ED
xor ebp, ebp
:00416049 392D984C4400 cmp dword
ptr [00444C98], ebp
:0041604F 752C
jne 0041607D
:00416051 8B5C2418
mov ebx, dword ptr [esp+18]
:00416055 8BC3
mov eax, ebx
:00416057 803B00
cmp byte ptr [ebx], 00 <---- 註冊姓名是否為空
:0041605A 7417
je 00416073
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00416071(C)
|
:0041605C 8A08
mov cl, byte ptr [eax]
:0041605E 80F961
cmp cl, 61
<---- 61 is 'a'
:00416061 7C0A
jl 0041606D
:00416063 80F97A
cmp cl, 7A
<---- 7a is 'z'
:00416066 7F05
jg 0041606D
:00416068 80E920
sub cl, 20
:0041606B 8808
mov byte ptr [eax], cl
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00416061(C), :00416066(C)
|
:0041606D 40
inc eax
:0041606E 803800
cmp byte ptr [eax], 00
:00416071 75E9
jne 0041605C
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0041605A(C)
|
:00416073 8BC3
mov eax, ebx
:00416075 5D
pop ebp
:00416076 5F
pop edi
:00416077 5E
pop esi
:00416078 5B
pop ebx
:00416079 83C404
add esp, 00000004
:0041607C C3
ret
用我名字的註冊碼----name:pcrocker(與大小寫無關)code:488048659
該APP的註冊支援一個位元組:如‘a’<-----> 65,也支援漢字:‘我愛你’<-----> 1364184822(誰的手機號*_*)
原理清楚後,寫序號產生器就很容易,我這裡WINDOWS下的編輯器只有VB,可惜我不願用也不會用,哪位有興趣就寫出序號產生器。
感覺採用這種註冊形式的APP比較憨厚,最容易CRACCK,不要破的太過分。
時間:2000-02-23
相關文章
- OAuth 2.0以及它的工作過程工作過程2024-10-21OAuth
- 原始碼分析 SpringCloud 2020.0.4 版本 EurekaClient 的註冊過程2021-12-29原始碼SpringGCCloudclient
- 電子郵件地址註冊過程詳解2023-10-17
- Android Binder原理(三)系統服務的註冊過程2019-11-19Android
- 微服務通訊之feign的註冊、發現過程2020-09-30微服務
- Spring Cloud Eureka原理分析(一):註冊過程-服務端2019-02-28SpringCloud服務端
- Presto 標量函式註冊和呼叫過程簡述2020-09-28REST函式
- 原始碼簡析XXL-JOB的註冊和執行過程2021-05-10原始碼
- oracle 12c 新增的LREG程式及其動態註冊的過程2020-01-17Oracle
- window版Sourcetree跳過註冊的方法2018-11-30
- myeclipse2017破解過程以及遇到的破解失敗的問題2018-09-13Eclipse
- SourceTree跳過註冊安裝使用2019-11-13
- 第8 章過程管理2022-04-16
- java類的載入過程2018-12-06Java
- 整理類載入的過程2018-05-03
- 類的載入過程概述2020-10-11
- html載入過程2019-02-16HTML
- runtime載入過程2019-02-25
- 類載入過程2021-08-13
- spring通過註解註冊bean的方式+spring生命週期2021-12-02SpringBean
- 【日記】度過了一個墮落的週末……(184 字)2024-07-01
- 辛辛苦苦學會的 webpack dll 配置,可能已經過時了2019-09-26Web
- springboot引導上下文載入過程和配置載入過程2022-11-23Spring Boot
- 某穿牆輔助的註冊碼破解2018-03-10
- 輸入URL展示過程2020-04-06
- JVM類載入過程2021-10-18JVM
- Hadoop將過時了?2019-01-08Hadoop
- 凱撒密碼加解密過程與破解原理2024-07-10密碼解密
- 週末我把HashMap原始碼又過了一遍2020-11-16HashMap原始碼
- 最好用的終端模擬器 ZOC8註冊碼最新 ZOC8破解下載2023-10-31
- 【SpringBoot】服務對註冊中心的註冊時機2024-05-25Spring Boot
- ORACLE RAC TO RAC DG搭建過程中可能遇到的問題2019-03-27Oracle
- Spring ConfigurationClassPostProcessor Bean解析及自注冊過程2018-09-27SpringBean
- Android HAL模組的載入過程2018-12-18Android
- 三-類的載入過程詳解2020-11-30
- Tower 最新註冊碼 Tower 破解下載2023-09-28
- 中興ZXV10B860AV2.1-A破解過程2019-02-02
- 過兩年 JVM 可能就要被 GraalVM 替代了2022-12-16JVMLVM
- 頁面載入全過程2018-11-27