首页
社区
课程
招聘
这段代码可逆吗?
发表于: 2005-5-1 11:37 4282

这段代码可逆吗?

2005-5-1 11:37
4282
00417382   |> /8A5404 17     /MOV     DL,SS:[ESP+EAX+17]               
00417386   |. |8A4C04 16     |MOV     CL,SS:[ESP+EAX+16]
0041738A   |. |885404 7C     |MOV     SS:[ESP+EAX+7C],DL
0041738E   |. |8B5404 14     |MOV     EDX,SS:[ESP+EAX+14]
00417392   |. |884C04 7D     |MOV     SS:[ESP+EAX+7D],CL
00417396   |. |8A4C04 14     |MOV     CL,SS:[ESP+EAX+14]
0041739A   |. |C1EA 08       |SHR     EDX,8
0041739D   |. |885404 7E     |MOV     SS:[ESP+EAX+7E],DL
004173A1   |. |884C04 7F     |MOV     SS:[ESP+EAX+7F],CL
004173A5   |. |83C0 04       |ADD     EAX,4
004173A8   |. |83F8 20       |CMP     EAX,20
004173AB   |.^\7C D5         \JL      SHORT Apollo_D.00417382
004173AD   |.  8D5424 7C     LEA     EDX,SS:[ESP+7C]
004173B1   |.  8D4C24 10     LEA     ECX,SS:[ESP+10]
004173B5   |.  52            PUSH    EDX
004173B6   |.  E8 C7D70300   CALL    <JMP.&MFC42.#537_CString::CString>    ;这是干什么的?
004173BB   |.  8B4424 10     MOV     EAX,SS:[ESP+10]
004173BF   |.  8B4C24 0C     MOV     ECX,SS:[ESP+C]
004173C3   |.  50            PUSH    EAX                                   ;真注册名
004173C4   |.  51            PUSH    ECX                                   ;假注册名
004173C5   |.  FFD6          CALL    ESI                                   ;  msvcrt._mbscmp

求助大家:
能不能根据   004173C3处的注册名逆运算出注册码 ?
如果可以,该怎么办??
这个程序大量用到了msvcrt._mbscmp这个函数,这是什么函数?主要作用是什么?请大家给详细介绍一下?(应该很有用!)
这是Apollo DVD Copy 4.30反汇编代码

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
004173C3 处只是压栈炒作而已!
你说的那个函数是一个VB的字符串比较函数
你法的代码不全!给出下载地址把!
我看看
2005-5-1 19:43
0
雪    币: 288
活跃值: (415)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
3
如果PUSH EAX是真注册码的话说明注册码的CALL已经执行过了

004173B6   |.  E8 C7D70300   CALL    <JMP.&MFC42.#537_CString::CString>    ;这是干什么的?
这好像是VC的CString函数
如代码:
CString ss="sss";
就会有这个的
2005-5-1 20:27
0
雪    币: 442
活跃值: (1216)
能力值: ( LV12,RANK:1130 )
在线值:
发帖
回帖
粉丝
4
同意 东方青石 的说法
2005-5-1 20:28
0
雪    币: 207
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5

看来技术高手们都晚上出来啊??白天等了一天也没有回啊 :)

软件名称:Apollo DVD Copy
是一款复制DVD的软件
下载地址:http://gzcnc.onlinedown.net:82/down/apodvdcopy.exe

我的分析是参考本论坛<无名和尚>的>Apollo DVD Backup pro v1.1.1 爆破>
参考地址:
http://bbs.pediy.com/showthread.php?threadid=677&highlight=Apollo

他的文章是以爆破方式解决,我想以找出算法的方式解决,顺便学习一下嘛!

根据查询的好多破文来看,在调用msvcrt._mbscmp函数之前的EAX一般存放的都是真码,而ECX则是假码,不过这个软件它不是把真注册码放在EAX处,而是根据你输入的注册码算出注册名,然后放入EAX,而ECX处是你输入的注册名.
这样一来,是不是只能从 注册码--->注册名 这一段来分析出算法呢???只是我笨拙,还没有看出是哪一块,请大家指点!

PUSH    EAX                                   ;
PUSH    ECX                                   ;
CALL    ESI                                   ;  msvcrt._mbscmp

2005-5-2 10:43
0
雪    币: 207
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
请大家指点一下吧!今天又遇到这个函数了:msvcrt._mbscmp
2005-5-3 20:09
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
今天才看到哦!
还没有下载.根据你的说法他的验证过程函数是 F(注册码)=F(注册名),这跟F(注册名)=F(注册码)没有什么两样!
2005-5-3 21:48
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
看了以下无名和尚的破文,根据他的解释软件可能用到比较复杂的算法,不过他的爆破法我喜欢!
2005-5-3 21:55
0
雪    币: 207
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
爆破是很简单,谁能提供一下算法,注册码总共32位,好像很复杂,如果谁告诉我这太太太复杂,我就不深入了......
2005-5-8 08:28
0
雪    币: 389
活跃值: (912)
能力值: ( LV9,RANK:770 )
在线值:
发帖
回帖
粉丝
10
CString是VC的 一个类
_stricmp, _wcsicmp, _mbsicmp
Perform a lowercase comparison of strings.

int _stricmp( const char *string1, const char *string2 );

int _wcsicmp( const wchar_t *string1, const wchar_t *string2 );

int _mbsicmp( const unsigned char *string1, const unsigned char_t *string2 );

Routine Required Header Compatibility
_stricmp <string.h> Win 95, Win NT
_wcsicmp <string.h> or <wchar.h> Win 95, Win NT
_mbsicmp <mbstring.h> Win 95, Win NT
2005-5-8 21:39
0
游客
登录 | 注册 方可回帖
返回
//