首页
社区
课程
招聘
ResScope1.92算法分析
发表于: 2004-7-21 21:06 13900

ResScope1.92算法分析

2004-7-21 21:06
13900

ResScope,一个将比exeScope更强的软件资源分析工具,很不错的软件。

delphi程序,无壳无反调试无校验,我喜欢,:)。
通过字符串容易找到这里,很容易看到,读取注册表中的用户名和注册码,分别计算后进行再比较。

 
CODE:0051B6EB                 mov     cl, 1
CODE:0051B6ED                 mov     edx, offset aSoftwareRest_3 ; "SOFTWARE\\RESTOOLS\\ResScope"
CODE:0051B6F2                 mov     eax, [ebp+var_8]
CODE:0051B6F5                 call    @Registry@TRegistry@OpenKey$qqrx17System@AnsiStringo ; Registry::TRegistry::OpenKey(System::AnsiString,bool)
CODE:0051B6FA                 test    al, al
CODE:0051B6FC                 jz      loc_51B888
CODE:0051B702                 lea     eax, [ebp+var_C]
CODE:0051B705                 call    @System@@LStrClr$qqrr17System@AnsiString ; System::__linkproc__ LStrClr(System::AnsiString &)
CODE:0051B70A                 lea     eax, [ebp+var_10]
CODE:0051B70D                 call    @System@@LStrClr$qqrr17System@AnsiString ; System::__linkproc__ LStrClr(System::AnsiString &)
CODE:0051B712                 mov     edx, offset aReguser_2 ; "reguser"
CODE:0051B717                 mov     eax, [ebp+var_8]
CODE:0051B71A                 call    @Registry@TRegistry@ValueExists$qqrx17System@AnsiString ; Registry::TRegistry::ValueExists(System::AnsiString)
CODE:0051B71F                 test    al, al
CODE:0051B721                 jz      short loc_51B733
CODE:0051B723                 lea     ecx, [ebp+var_C]
CODE:0051B726                 mov     edx, offset aReguser_2 ; "reguser"
CODE:0051B72B                 mov     eax, [ebp+var_8]
CODE:0051B72E                 call    @TRegistry@ReadString$qqrx10AnsiString ; TRegistry::ReadString(AnsiString)
CODE:0051B733 
CODE:0051B733 loc_51B733:                             ; CODE XREF: sub_51B6A0+81j
CODE:0051B733                 mov     edx, offset aRegcode_1 ; "regcode"
CODE:0051B738                 mov     eax, [ebp+var_8]
CODE:0051B73B                 call    @Registry@TRegistry@ValueExists$qqrx17System@AnsiString ; Registry::TRegistry::ValueExists(System::AnsiString)
CODE:0051B740                 test    al, al
CODE:0051B742                 jz      short loc_51B754
CODE:0051B744                 lea     ecx, [ebp+var_10]
CODE:0051B747                 mov     edx, offset aRegcode_1 ; "regcode"
CODE:0051B74C                 mov     eax, [ebp+var_8]
CODE:0051B74F                 call    @TRegistry@ReadString$qqrx10AnsiString ; TRegistry::ReadString(AnsiString)
CODE:0051B754 
CODE:0051B754 loc_51B754:                             ; CODE XREF: sub_51B6A0+A2j
CODE:0051B754                 mov     eax, [ebp+var_10]
CODE:0051B757                 call    @System@@LStrLen ; System::__linkproc__ LStrLen
CODE:0051B75C                 cmp     eax, 30h
CODE:0051B75F                 jnz     loc_51B888
CODE:0051B765                 mov     eax, [ebp+var_C]
CODE:0051B768                 call    @System@@LStrLen ; System::__linkproc__ LStrLen
CODE:0051B76D                 test    eax, eax
CODE:0051B76F                 jle     loc_51B888
CODE:0051B775                 lea     eax, [ebp+var_14] ; 保存返回值
CODE:0051B775                                         ; 指向18字节长PCHAR
CODE:0051B778                 push    eax
CODE:0051B779                 mov     cl, 1
CODE:0051B77B                 mov     dl, 1
CODE:0051B77D                 mov     eax, [ebp+var_C] ; "reguser"
CODE:0051B780                 call    sub_51A06C      ; 处理用户名
CODE:0051B785                 mov     eax, [ebp+var_14] ; 处理用户名得到的18字节长的串,先入栈,待会好比较
CODE:0051B788                 push    eax
CODE:0051B789                 lea     ecx, [ebp+var_18] ; 保存返回值。。
CODE:0051B78C                 mov     dl, 1
CODE:0051B78E                 mov     eax, [ebp+var_10] ; "regcode"
CODE:0051B791                 call    sub_519298      ; 注册码变换函数
CODE:0051B796                 mov     edx, [ebp+var_18]
CODE:0051B799                 pop     eax
CODE:0051B79A                 call    @System@@LStrCmp$qqrv ; System::__linkproc__ LStrCmp(void)
CODE:0051B79F                 jnz     short loc_51B7A5 ; 
 
CODE:00525CBB                 mov     eax, ds:off_525214  ; * Reference to class THexDumpPass
CODE:00525CC0                 call    sub_425EEC      ; * Reference to: Classes.TComponent.Create(TComponent;boolean;TComponent);
CODE:00525CC5                 mov     ebx, eax
CODE:00525CC7                 lea     eax, [ebp+var_130]
CODE:00525CCD                 call    sub_518E18      ; 用户名进行变换转为一串字符
CODE:00525CD2                 mov     edx, [ebp+var_130]
CODE:00525CD8                 mov     eax, ebx
CODE:00525CDA                 mov     ecx, [eax]
CODE:00525CDC                 call    dword ptr [ecx+18h] ; Classes::TComponent::SetName()
 
CODE:0051A0C3                 mov     edx, ds:dword_578440 ; 用户ID,类似"92F1L8EACT2FFNFF"一串字符。。。
CODE:0051A0C9                 call    @System@@LStrCat$qqrv ; System::__linkproc__ LStrCat(void)

CODE:0051A4A6                 push    offset unk_575B10 ; IVector,初始化向量
CODE:0051A4AB                 mov     edx, offset byte_575B08 ; keyCAST..64位密钥
CODE:0051A4B0                 lea     eax, [ebp+var_F4_TCast128Data] ; 0012FAF8
CODE:0051A4B0                                         ;   TCast128Data= record
CODE:0051A4B0                                         ;     InitBlock: array[0..7] of byte;    { initial IV }
CODE:0051A4B0                                         ;     LastBlock: array[0..7] of byte;    { current IV }
CODE:0051A4B0                                         ;     xKey: array[0..31] of DWord;
CODE:0051A4B0                                         ;     Rounds: integer;
CODE:0051A4B0                                         ;   end;
CODE:0051A4B6                 mov     ecx, 8          ; sizeof(Key)
CODE:0051A4BB                 call    Cast128Init     ; 注意此处Cast128非调用DEC的函数,乃是独立的类。
                                                      ; 注意其sbox乃是作者随机生成
 
CODE:0051A50E                 lea     edx, [ebp+eax+var_48] ; 输入串,输出也保存再该地址
CODE:0051A512                 lea     eax, [ebp+var_F4_TCast128Data] ; 密钥初始化结果
CODE:0051A518                 call    Cast128EncryptCBC ; procedure Cast128EncryptCBC(var Data: TCast128Data; InData, OutData: pointer);
CODE:0051A518                                         ;   { encrypts the data in a 64bit block using the CBC chaining mode }
 
CODE:0051A6FB                 mov     edx, ds:off_4F31E0 ; Reference to class TCipher_3Way,这个可由DEDE反汇编代码中看到
CODE:0051A701                 mov     eax, [ebp+var_14]
CODE:0051A704                 call    @TCipherManager@@SetClass ; TCipherManager::__linkproc__ SetClass
CODE:0051A709                 xor     ecx, ecx
CODE:0051A70B                 mov     edx, [ebp+var_18]
CODE:0051A70E                 mov     eax, [ebp+var_14]
CODE:0051A711                 call    @TCipherManager@@InitKey ; procedure TCipherManager.InitKey(const Key: String; IVector: Pointer);
CODE:0051A716                 push    18h             ; 待Encode串长度
CODE:0051A718                 lea     ecx, [ebp+var_60] ; 返回串
CODE:0051A71B                 lea     edx, [ebp+var_48] ; Source串,由Cast128而来
CODE:0051A71E                 mov     eax, [ebp+var_14]
CODE:0051A721                 call    @TCipherManager@@EncodeBuffer ; procedure TCipherManager.EncodeBuffer
CODE:0051A721                                         ; (const Source; var Dest; DataSize: Integer);

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 7
支持
分享
最新回复 (23)
雪    币: 239
活跃值: (220)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
2
zan
2004-7-21 21:19
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
3
GOOD  :D
2004-7-21 21:29
0
雪    币: 207
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
最初由 yesky1 发布
这个软件的爆破起来不是很容易

55555555……我爆了一天啊,没爆掉!
2004-7-21 22:02
0
雪    币: 3331
活跃值: (2965)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
楼主说的对,我虽然爆破不用注册了,但是在使用时出现了资源保存错误的对话框(和1.90一样)。
2004-7-22 08:33
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
1楼的,能不能发个注册机给我,谢谢。
wx_fengcw@163.com
2004-7-22 10:58
0
雪    币: 223
活跃值: (106)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
好不容易等到如此强帖啊!:D
2004-7-22 11:19
0
雪    币: 339
活跃值: (1510)
能力值: ( LV13,RANK:970 )
在线值:
发帖
回帖
粉丝
8
不愧是IPB的。俺不懂算法,看你这个很吓人
2004-7-22 11:21
0
雪    币: 690
活跃值: (1841)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
9
学习
2004-7-22 13:36
0
雪    币: 367
活跃值: (42)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
:D 终于被你搞定了?
2004-7-22 14:06
0
雪    币: 3331
活跃值: (2965)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
这次的注册码破天荒的升为48位了,厉害。
2004-7-22 15:55
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
强人啊!
2004-7-22 16:50
0
雪    币: 1126
活跃值: (156)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
13
:)
2004-7-22 20:51
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
请给兄弟们做个注册机,交流交流吧。
2004-7-22 21:16
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
强!:)
2004-7-22 22:34
0
雪    币: 319
活跃值: (1186)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
16
good
2004-7-22 23:15
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
good,好好学习
2004-7-23 00:47
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
很久没来看雪了,一来就看到yesky1兄的佳作,gREAt:D
2004-7-23 10:11
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
最初由 eCool 发布
强!:)

eCool成潜水大鄂了,N久未露面的说,想死偶了,哈哈哈...:D
2004-7-23 10:12
0
雪    币: 214
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
最初由 Nnewell 发布
很久没来看雪了,一来就看到yesky1兄的佳作,gREAt:D


你的呢?;)
2004-7-23 10:12
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
最初由 Arucuied 发布



你的呢?;)

发科右,马甲的说:D
2004-7-23 10:14
0
雪    币: 291
活跃值: (400)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
22
天啊,看完还写不出注册机啊
偶好菜~~~~~~~~~
2004-7-26 00:20
0
雪    币: 236
活跃值: (48)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
学习中……
2004-8-10 13:59
0
雪    币: 3331
活跃值: (2965)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
破解版已出,没有任何问题。
2004-8-10 14:39
0
游客
登录 | 注册 方可回帖
返回
//