吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 18477|回复: 41
收起左侧

[分享] 中星智睿职称计算机考试(windowsxp10.1)

  [复制链接]
xxdoc 发表于 2010-12-7 11:14
本帖最后由 xxdoc 于 2010-12-7 11:23 编辑

恰好看到论坛有人问这个怎么破解。。
http://www.52pojie.cn/viewthread.php?tid=68276&highlight=%2Bhuangshaojian

小生是说标志位爆破!那是牛人的方法。我也找不到标志位。


写这个帖子之前,我要感谢一个无私的牛人(无私的牛人)。。感谢他帮助我算出了注册码。。牛人不会给你现成的答案,但是他会给你一个提示,在提示下经过查看资料。最后搞定。那是很不错的感觉了。
牛人说最好要学编程。不然不用搞了。我是不搞了。我搞不动了。。
对于考试来说用以前的版本完全可以了。。(题外话,我刚考过的了)
声明一下我不懂汇编,花了很多时间

破解方法如下:

牛人帮我算出了注册码:
----------------------------------------------------------
机器码:GLYNX-ARGGR-YIWKS-SWAEM-BQUDP
注册码:OOBKY-OIIUY-PIOSP-WDTIR-KQXSO
-------------------------------------------------------------


搜索特征码
8D 8D 20 FF FF FF 8D 55 CC 51 52

---------------------------------------------------------------------------------------------------------------------
找到如下地址就是我们要固定机器码的地方

在00578577     8B50 3C                      MOV EDX,DWORD PTR DS:[EAX+3C]        ; 这里写入机器码
后的下一行开始打补丁
JMP xxxxxxxx处的下面空白位置                         ; 补丁开始了

找空白地址(xxxxxxxx)后在数据窗口处写入准备pach进去的机器码UNICOAD类型字符串 GLYNX-ARGGR-YIWKS-SWAEM-BQUDP
NOP了两行代码
下面的代码是我在unpack看到的。恰好用的上,就照抄过来了,当然还有更简单的代码。
00584FB3     60                               PUSHAD                               ; 保护堆栈
00584FB4     8B48 3C                      MOV ECX,DWORD PTR DS:[EAX+3C]        ; 获取欲替换内容地址(机器码的地址)保存起来
00584FB7     33C0                           XOR EAX,EAX                          ; 清空eax备用
00584FB9     33D2                           XOR EDX,EDX                          ; 清空edx备用
00584FBB     33DB                           XOR EBX,EBX                          ; 清空ebx备用
00584FBD     90                               NOP                                  ; 584e75 为替换机器码的地址
00584FBE     8B9A 754F5800           MOV EBX,DWORD PTR DS:[EDX+xxxxxxxx]    ; 讲替换内容临时存放ebx,edx=记位,xxxxxxxx=内容地址
00584FC4     891C11                       MOV DWORD PTR DS:[ECX+EDX],EBX       ; 替换原内容
00584FC7     83FA 38                      CMP EDX,38                           ; 机器码共有56个双字节56的16进制=38
00584FCA     74 05                          JE SHORT 00584FD1                    ; 检查是否替换完
00584FCC     83C2 04                      ADD EDX,4                            ; 记位+4因为是dword型
00584FCF   ^ EB ED                        JMP SHORT 00584FBE                   ; 继续替换
00584FD1     61                               POPAD                                ; 恢复
00584FD2     8D48 38                      LEA ECX,DWORD PTR DS:[EAX+38]        ; 原来的照抄下来的
00584FD5     FF15 AC114000          CALL DWORD PTR DS:[<&MSVBVM60.__vbaS>; 原来的照抄下来的
00584FDB   ^ E9 A335FFFF              jMP 00578583                         ; 跳回去
二进制代码:
60 8B 48 3C 33 C0 33 D2 33 DB 90 8B 9A 75 4F 58 00 89 1C 11 83 FA 38 74 05 83 C2 04 EB ED 61 8D
48 38 FF 15 AC 11 40 00 E9 A3 35 FF FF
保存所以的修改。OK

最后说一下。建议大家多看下各个论坛的新手提问区。有很多热心的牛人会回答别人的问题。恰好有很问题的答案会让我们用的着(本例中的代码就是照抄unpack里面的一个,感谢这位大侠。忘记名字了)
看图你们就知道了
替换文本.jpg

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| xxdoc 发表于 2010-12-7 11:15
本帖最后由 xxdoc 于 2010-12-7 11:17 编辑

例子.exe  原程序
例子_替换文本.exe 已经用替换文本方式修改过的
例子_替换地址.exe 已经用替换文本地址方式修改过的

按钮事件地址:004011D4
自定义文本地址:0041259A

===================================华丽的分割线=====================================

替换文本内容代码
00412551   > \60            pushad                                   ;  保存环境
00412552   .  33C0          xor     eax,eax                          ;  清空eax备用,这里好像用不到那么多寄存器
00412554   .  33C9          xor     ecx,ecx                          ;  清空ecx备用,存放欲替换地址
00412556   .  33D2          xor     edx,edx                          ;  清空edx备用,替换位置记位
00412558   .  33DB          xor     ebx,ebx                          ;  清空ebx备用,替换内容过渡
0041255A   .  8B4D FC       mov     ecx,dword ptr [ebp-4]            ;  获取欲替换内容地址
0041255D   >  8B9A 9A254100 mov     ebx,dword ptr [edx+41259A]       ;  讲替换内容临时存放ebx,edx=记位,41259A=内容地址
00412563   .  891C11        mov     dword ptr [ecx+edx],ebx          ;  替换原内容
00412566   .  83FA 08       cmp     edx,8                            ;  检查是否替换完
00412569   .  74 05         je      short 00412570                   ;  完成则恢复环境执行原来代码
0041256B   .  83C2 04       add     edx,4                            ;  记位+4因为是dword型
0041256E   .^ EB ED         jmp     short 0041255D                   ;  继续替换
00412570   >  61            popad                                    ;  下面的大家都懂了
00412571   .  8D45 FC       lea     eax,dword ptr [ebp-4]
00412574   .  50            push    eax
00412575   .  68 8C4A4100   push    00414A8C
0041257A   .^ E9 71ECFEFF   jmp     004011F0
二进制代码
60 33 C0 33 C9 33 D2 33 DB 8B 4D FC 8B 9A 9A 25 41 00 89 1C 11 83 FA 08 74 05 83 C2 04 EB ED 61
8D 45 FC 50 68 8C 4A 41 00 E9 71 EC FE FF

===================================华丽的分割线=====================================

替换文本地址代码
00412551   > \60            pushad                                   ;  保存环境
00412552   .  A1 8A254100   mov     eax,dword ptr [41258A]           ;  自定义文本指针(即地址)给EAX
00412557   .  8945 FC       mov     dword ptr [ebp-4],eax            ;  替换原来文本的地址为自定义文本的地址
0041255A   .  61            popad                                    ;  恢复环境
0041255B   .  8D45 FC       lea     eax,dword ptr [ebp-4]            ;  这些这些都是原来的代码
0041255E   .  50            push    eax
0041255F   .  68 8C4A4100   push    00414A8C
00412564   .^ E9 87ECFEFF   jmp     004011F0
二进制代码
60 A1 8A 25 41 00 89 45 FC 61 8D 45 FC 50 68 8C 4A 41 00 E9 87 EC FE FF

unpack转来的

例子_替换.rar (169.48 KB, 下载次数: 47)
 楼主| xxdoc 发表于 2010-12-7 11:18
本帖最后由 xxdoc 于 2010-12-7 11:24 编辑

在给大家看一个pediy看到的。
-------------------------------------

我查到的用这个也很简单
CString cs1,cs2;
cs1="123456789";
cs2="abcdefghi";
__asm
{
  mov esi,cs1//A函数地址
  mov edi,cs2//B函数地址
  mov ecx,9h
  rep movsb
}
MessageBox(cs2);
---------------------------------------------------------------------------------------------------------------
**************************************************************************
mov esi, dword ptr [ebp+8]          ;将堆栈ebp+8的4个字节的值送入esi(源字串数组地址)
lea edi, dword ptr [ebp-48]           ;将堆栈ebp-48的4个字节的值送入edi(目的字串数组偏移地址)
push ecx
mov ecx, 0f                                      ;字串操作次数
rep movs dword ptr es:[edi], dword ptr [esi]  ;将源字串送入目的字串
pop ecx
*******************************************************************************
movs系列指令
ds:esi  源
es:edi 目的
cx     次数
rep movsb 一次一字节源向目的拷贝一字节数据 拷贝后自动调整指针到下个字符
拷贝次数由 ecx值决定 应该是这样的
实际写的时候 都是
rep movsb =  rep movs byte ptr es:[edi], byte ptr [esi]
rep movsw =  rep movs word ptr es:[edi], word ptr [esi]
rep movsd =  rep movs dword ptr es:[edi], dword ptr [esi]
******************************************************************************
写smc代码
下面就是用A里面的数据替换B里面的数据
pushad
  mov esi,cs1//A函数地址
  mov edi,cs2//B函数地址
  mov ecx,9h /替换的长度。
  rep movsb  一个一个的替换掉B里面的数据
popad
**********************************************************************************
 楼主| xxdoc 发表于 2010-12-7 11:27
q13774748552 发表于 2010-12-7 12:04
呵呵,支持一楼的说法
lmz8com 发表于 2010-12-7 13:49
[s:50]支持
mie 发表于 2010-12-7 14:32
拿来看看
huangshaojian 发表于 2010-12-8 09:33
研究了一下,还是不懂替换,要加强学习
小生我怕怕 发表于 2010-12-8 15:17
http://dl.dbank.com/c0osqwimt5
覆盖替换就OK
huangshaojian 发表于 2010-12-8 17:25
回复 8# huangshaojian


    你发的文件用不了,还是读不出题目。是不是错了。
未命名11.jpg     QQ截图未命名12.png
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-18 01:29

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表