吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6842|回复: 9
收起左侧

[原创] 征服者12.0107内存补丁制作

[复制链接]
Smoke 发表于 2012-1-13 10:42
本帖最后由 Smoke 于 2012-1-13 10:45 编辑

【文章标题】: 征服者12.0107内存补丁制作
【文章作者】: Smoke
【软件名称】: 卧龙吟.exe
【软件大小】: 650 KB (666,112 字节)
【下载地址】: 自己搜索下载
【加壳方式】: ASPack 2.12
【编写语言】: E Language
【使用工具】: peid OllyDbg keymake
【操作平台】: Windows Xp Sp3
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
  Peid 查壳 ASPack 2.12
  
  直接载入神器的OllyDbg
005213B0 /75 08 jnz short 005213BA
005213B2 |B8 01000000 mov eax, 1
005213B7 |C2 0C00 retn 0C
005213BA \68 00104000 push 00401000
005213BF C3 retn //飞向我们期待的光明之巅.
来到了此程序的 OEP 00401000
00401000 E8 06000000 call 0040100B
00401005 50 push eax
00401006 E8 BB010000 call 004011C6 ; jmp to kernel32.ExitProcess
0040100B 55 push ebp
0040100C 8BEC mov ebp, esp
0040100E 81C4 F0FEFFFF add esp, -110
接着我们在.data段 F2下断 F9运行
  
  来到以下代码处:
10028CBD 8B42 30 mov eax, dword ptr ds:[edx+0x30]
10028CC0 83E0 01 and eax, 0x1
10028CC3 85C0 test eax, eax
10028CC5 75 10 jnz short 10028CD7
10028CC7 8B4D 08 mov ecx, dword ptr ss:[ebp+0x8]
10028CCA 51 push ecx
10028CCB 8B4D F8 mov ecx, dword ptr ss:[ebp-0x8]
10028CCE E8 4D050300 call 10059220
10028CD3 FFE0 jmp eax //我们在这里F4 断下后,F8单步
10028CD5 EB 0E jmp short 10028CE5

F8后来到了以下代码处:
0051A797 FC cld
0051A798 DBE3 finit
0051A79A E8 08FEFFFF call 0051A5A7
0051A79F 68 75A65100 push 0051A675
0051A7A4 B8 03000000 mov eax, 0x3
0051A7A9 E8 37000000 call 0051A7E5
0051A7AE 83C4 04 add esp, 0x4
0051A7B1 E8 4B44FAFF call 004BEC01
0051A7B6 E8 254DFAFF call 004BF4E0
0051A7BB E8 0744FAFF call 004BEBC7
0051A7C0 E8 1F44FAFF call 004BEBE4
我们就可以搜索ascii字符串了.因为此辅助输入错误的帐号密码会提示 登录失败,可能账户已经过期或帐号密码错误
  那么我们就直接搜索 登录失败,
  搜索到 中文搜索引擎,
  地址=004C0D1F
  反汇编=push    00419156
  文本字符串=登录失败,可能账户已经过期或帐号密码错误
  
  我们双击进去.
  
  进去后找到段首
  004C0BD3     55                    push    ebp   //F2下断 F9运行
  
  程序运行起来后 我们在 用户名 密码 处随便输入 如 用户名:52pojie  密码:www.52pojie.cn
  
  点击登录按钮, 已经断下了.接着我们就单步走下去吧.
004C0BD3 55 push ebp
004C0BD4 8BEC mov ebp, esp ; EBP=0x12F414;//EBP=ESP ("H")
004C0BD6 81EC 10000000 sub esp, 0x10 ; 在栈中增加空间,大小为0X10字节(如EAX为双字,4字节)
004C0BDC 6A FF push -0x1 ; -0x0X1进栈
004C0BDE 6A 08 push 0x8 ; 0x8进栈
004C0BE0 68 FB530116 push 0x160153FB ; 0x0进栈
004C0BE5 68 3D510152 push 0x5201513D ; 0x0进栈
004C0BEA E8 1A9C0500 call 0051A809
004C0BEF 83C4 10 add esp, 0x10 ; 在栈中抛去空闲空间,大小为0X10字节(如EAX为双字,4字节)
004C0BF2 8945 FC mov dword ptr ss:[ebp-0x4], eax ; SS段[12F410]=0x1C1FF0;
004C0BF5 6A FF push -0x1 ; -0x0X1进栈
004C0BF7 6A 08 push 0x8 ; 0x8进栈
004C0BF9 68 F8530116 push 0x160153F8 ; 0x0进栈
004C0BFE 68 3D510152 push 0x5201513D ; 0x0进栈
004C0C03 E8 019C0500 call 0051A809
004C0C08 83C4 10 add esp, 0x10 ; 在栈中抛去空闲空间,大小为0X10字节(如EAX为双字,4字节)
004C0C0B 8945 F8 mov dword ptr ss:[ebp-0x8], eax ; SS段[12F40C]=0x1DE1F0;
004C0C0E 8D45 F8 lea eax, dword ptr ss:[ebp-0x8] ; EAX=0x12F40C;//EAX=EBP-0X8
004C0C11 50 push eax ; 0x12F40C进栈;//EAX
004C0C12 8D45 FC lea eax, dword ptr ss:[ebp-0x4] ; EAX=0x12F410;//EAX=EBP-0X4
004C0C15 50 push eax ; 0x12F410进栈;//EAX
004C0C16 E8 1F010000 call 004C0D3A
004C0C1B 8945 F4 mov dword ptr ss:[ebp-0xC], eax
004C0C1E 8B5D FC mov ebx, dword ptr ss:[ebp-0x4] ; EBX=0x23A710;//SS段[12E680];
004C0C21 85DB test ebx, ebx ; ZF=0;//EBX=0x23A710;EBX自身TEST运算时,EBX为0则ZF=1;否则ZF=0
004C0C23 74 09 je short 004C0C2E ; 不跳 //ZF=0;只有相等时,才跳
004C0C25 53 push ebx ; 0x23A710进栈;//EBX ("52pojie")
004C0C26 E8 C09B0500 call 0051A7EB
004C0C2B 83C4 04 add esp, 0x4 ; 在栈中抛去空闲空间,大小为0X4字节(如EAX为双字,4字节)
004C0C2E 8B5D F8 mov ebx, dword ptr ss:[ebp-0x8] ; EBX=0x1DE1F0;//SS段[12F40C];
004C0C31 85DB test ebx, ebx ; ZF=0;//EBX=0x1DE1F0;EBX自身TEST运算时,EBX为0则ZF=1;否则ZF=0
004C0C33 74 09 je short 004C0C3E ; 不跳 //ZF=0;只有相等时,才跳
004C0C35 53 push ebx ; 0x1DE1F0进栈;//EBX ("www.52pojie.cn")
004C0C36 E8 B09B0500 call 0051A7EB
004C0C3B 83C4 04 add esp, 0x4 ; 在栈中抛去空闲空间,大小为0X4字节(如EAX为双字,4字节)
004C0C3E 68 02000080 push 0x80000002 ; 0x0进栈
004C0C43 6A 00 push 0x0 ; 0x0进栈
004C0C45 FF75 F4 push dword ptr ss:[ebp-0xC] ; 0x0进栈;//SS段[12F408]
004C0C48 68 01000000 push 0x1 ; 0x1进栈
004C0C4D BB DC090000 mov ebx, 0x9DC ; EBX=0x9DC
004C0C52 E8 AC9B0500 call 0051A803
004C0C57 83C4 10 add esp, 0x10 ; 在栈中抛去空闲空间,大小为0X10字节(如EAX为双字,4字节)
004C0C5A 33C9 xor ecx, ecx ; ECX=0,CF=0;//自身xor运算结果为0,CF=0
004C0C5C 41 inc ecx ; ECX=0x1
004C0C5D 51 push ecx ; 0x1进栈;//ECX
004C0C5E 50 push eax ; 0x0进栈;//EAX
004C0C5F 3BC8 cmp ecx, eax ; ZF=0;//ECX=0x1,EAX=0x0 //我们把这里改成 cmp eax,1 不让跳转实现.
004C0C61 0F8F 9C000000 jg 004C0D03 ; 跳到004C0D03 //ZF=0,SF=OF
004C0C67 6A FF push -0x1 ; -0x0X1进栈
004C0C69 6A 08 push 0x8 ; 0x8进栈
004C0C6B 68 FB530116 push 0x160153FB ; 0x0进栈
004C0C70 68 3D510152 push 0x5201513D ; 0x0进栈
004C0C75 E8 8F9B0500 call 0051A809
004C0C7A 83C4 10 add esp, 0x10 ; 在栈中抛去空闲空间,大小为0X10字节(如EAX为双字,4字节)
004C0C7D 8945 FC mov dword ptr ss:[ebp-0x4], eax ; SS段[12E680]=0x23A710;
004C0C80 8B45 FC mov eax, dword ptr ss:[ebp-0x4] ; EAX=0x23A710;//SS段[12E680];
004C0C83 50 push eax ; 0x23A710进栈;//EAX ("52pojie")
004C0C84 8B1D E80CAD00 mov ebx, dword ptr ds:[0xAD0CE8] ; EBX=0x1C1FF0;//DS段[AD0CE8];
004C0C8A 85DB test ebx, ebx ; ZF=0;//EBX=0x1C1FF0;EBX自身TEST运算时,EBX为0则ZF=1;否则ZF=0
004C0C8C 74 09 je short 004C0C97 ; 不跳 //ZF=0;只有相等时,才跳
004C0C8E 53 push ebx ; 0x1C1FF0进栈;//EBX ("52pojie")
004C0C8F E8 579B0500 call 0051A7EB
004C0C94 83C4 04 add esp, 0x4 ; 在栈中抛去空闲空间,大小为0X4字节(如EAX为双字,4字节)
004C0C97 58 pop eax ; EAX=0x1C1FF0;//出栈到EAX
004C0C98 A3 E80CAD00 mov dword ptr ds:[0xAD0CE8], eax ; DS段[AD0CE8]=0x1C1FF0;
004C0C9D 68 02000080 push 0x80000002 ; 0x0进栈
004C0CA2 6A 00 push 0x0 ; 0x0进栈
004C0CA4 68 00000000 push 0x0 ; 0x0进栈
004C0CA9 6A 00 push 0x0 ; 0x0进栈
004C0CAB 6A 00 push 0x0 ; 0x0进栈
004C0CAD 6A 00 push 0x0
004C0CAF 68 01000100 push 0x10001
004C0CB4 68 00000106 push 0x6010000
004C0CB9 68 01000152 push 0x52010001
004C0CBE 68 03000000 push 0x3 ; 0x3进栈
004C0CC3 BB 20030000 mov ebx, 0x320 ; EBX=0x320
004C0CC8 E8 369B0500 call 0051A803
004C0CCD 83C4 28 add esp, 0x28 ; 在栈中抛去空闲空间,大小为0X28字节(如EAX为双字,4字节)
004C0CD0 6A 00 push 0x0 ; 0x0进栈
004C0CD2 6A 00 push 0x0 ; 0x0进栈
004C0CD4 6A 00 push 0x0
004C0CD6 68 01000100 push 0x10001
004C0CDB 68 3C510106 push 0x601513C
004C0CE0 68 3D510152 push 0x5201513D
004C0CE5 68 02000000 push 0x2
004C0CEA BB 60030000 mov ebx, 0x360
004C0CEF E8 0F9B0500 call 0051A803
004C0CF4 83C4 1C add esp, 0x1C ; 在栈中抛去空闲空间,大小为0X1C字节(如EAX为双字,4字节)
004C0CF7 E9 3A000000 jmp 004C0D36
004C0CFC 58 pop eax
004C0CFD 59 pop ecx
004C0CFE ^ E9 59FFFFFF jmp 004C0C5C
004C0D03 83C4 08 add esp, 0x8
004C0D06 6A 00 push 0x0
004C0D08 6A 00 push 0x0
004C0D0A 6A 00 push 0x0
004C0D0C 68 01030080 push 0x80000301
004C0D11 6A 00 push 0x0
004C0D13 68 00000000 push 0x0
004C0D18 68 04000080 push 0x80000004
004C0D1D 6A 00 push 0x0
004C0D1F 68 56914100 push 00419156 ; 登录失败,可能账户已经过期或帐号密码错误
004C0D24 68 03000000 push 0x3
004C0D29 BB 00030000 mov ebx, 0x300
004C0D2E E8 D09A0500 call 0051A803
004C0D33 83C4 28 add esp, 0x28
004C0D36 8BE5 mov esp, ebp
004C0D38 5D pop ebp
004C0D39 C3 retn
004C0C5F 3BC8 cmp ecx, eax 
修改成
004C0C5F 83F8 01 cmp eax, 0x1 
004C0C62 90 nop
004C0C63 90 nop
004C0C64 90 nop
004C0C65 90 nop
004C0C66 90 nop
继续走下去,辅助的主界面已出现,那么也就说明了我们破解成了.
  
  然后我们就用keymake制作一个内存补丁
  
  补丁数据如下:
修改地址:004C0C5F
修改长度:8
原始指令:3BC80F8F9C000000
修改指令:83F8019090909090
生成出来即可.
  
  测试下,可以破解成功了.


  
  
  
--------------------------------------------------------------------------------
【版权声明】: 本文原创于Smoke, 转载请注明作者并保持文章的完整, 谢谢!
                                                       2012年01月13日 10:37:14






免费评分

参与人数 1热心值 +1 收起 理由
3736 + 1 期待更新破解!!非常好用的挂

查看全部评分

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

robinhan 发表于 2012-1-13 13:16
新手的福音
mfkwgij 发表于 2012-1-13 16:32
chen2501 发表于 2012-2-19 23:55
额 好像不能运行了 老提示连接服务器太慢或无法连接服务器 可能还有网络验证 还没去掉
xuhw 发表于 2012-4-16 02:36
如果能循環就好了
xuhw 发表于 2012-4-16 02:38
我已經了好多都不能使用呀  希望這可以用
xuhw 发表于 2012-4-16 02:41
有破文學習的最好了
xuhw 发表于 2012-4-16 02:42
大大再破解新版的呀
20110011 发表于 2012-4-16 02:45
传上最新版可以研究一下
claudia 发表于 2013-5-30 15:55
看看可用不。。 回来顶你。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-25 15:49

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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