本帖最后由 cmc5410 于 2012-7-31 11:54 编辑
小牛手动YY多开器追码视频教程地址
http://www.52pojie.cn/thread-157478-1-1.html
【文章标题】: 小牛不掉线YY多开器追码过程
【文章作者】: cmc5410
【软件名称】: 小牛不掉线YY多开器
【下载地址】: 自己搜索下载
【保护方式】: UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Marku
【编写语言】: AU3
【使用工具】: OD PE lordPE
【软件介绍】: 小牛不掉线YY多开器
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
首先 PEID查壳
UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo [Overlay]
OD载入 找到大跨度跳转 拉到OD最下面 如下004B1C1D 58 pop eax
004B1C1E 61 popad
004B1C1F 8D4424 80 lea eax,dword ptr ss:[esp-0x80]
004B1C23 6A 00 push 0x0
004B1C25 39C4 cmp esp,eax
004B1C27 ^ 75 FA jnz Xyy多开不.004B1C23
004B1C29 83EC 80 sub esp,-0x80
004B1C2C - E9 DF46F6FF jmp yy多开不.00416310
004B1C31 0000 add byte ptr ds:[eax],al
004B1C33 0000 add byte ptr ds:[eax],al
004B1C35 0000 add byte ptr ds:[eax],al
004B1C37 0000 add byte ptr ds:[eax],al
004B1C39 0000 add byte ptr ds:[eax],al
004B1C3B 0000 add byte ptr ds:[eax],al
004B1C3D 0000 add byte ptr ds:[eax],al
004B1C3F 0000 add byte ptr ds:[eax],al
004B1C41 0000 add byte ptr ds:[eax],al
004B1C43 0000 add byte ptr ds:[eax],al
004B1C45 0000 add byte ptr ds:[eax],al
004B1C2C处F2下断 F9运行 断下来之后 F2取消断点
F8更过 来到一下 00416310 E8 A7C00000 call yy多开不.004223BC
00416315 ^ E9 79FEFFFF jmp yy多开不.00416193
0041631A CC int3
0041631B CC int3
0041631C CC int3
0041631D CC int3
0041631E CC int3
0041631F CC int3
00416320 55 push ebp
00416321 8BEC mov ebp,esp
00416323 57 push edi
00416324 56 push esi
00416325 8B75 0C mov esi,dword ptr ss:[ebp+0xC]
00416328 8B4D 10 mov ecx,dword ptr ss:[ebp+0x10]
lordpe 找到程序进程 纠正镜像大小 脱壳
记录OEP 为16310
ImportREC重建输入表 填写记录的OEP 自动查找IAT 获取输入表 显示无效函数 修复转存文件
打开生成的转存文件 提示错误
现在需要修复附加数据
需要用到PEID插件 Overlay1.0 修复完附加数据 测试可以运行
OD载入
停在入口00416310 > E8 A7C00000 call Unpack_.004223BC
00416315 ^ E9 79FEFFFF jmp Unpack_.00416193
0041631A CC int3
0041631B CC int3
0041631C CC int3
0041631D CC int3
0041631E CC int3
0041631F CC int3
00416320 55 push ebp
00416321 8BEC mov ebp,esp
00416323 57 push edi
00416324 56 push esi
00416325 8B75 0C mov esi,dword ptr ss:[ebp+0xC]
00416328 8B4D 10 mov ecx,dword ptr ss:[ebp+0x10]
直接查找时找不到字符串的
F9运行
用户名这里输入我自己的QQ
注册码随便输入
点确定
弹出错误 “注册失败,用户名或注册码错误”
F12暂停
停在这里7C92E514 > C3 retn
7C92E515 8DA424 00000000 lea esp,dword ptr ss:[esp]
7C92E51C 8D6424 00 lea esp,dword ptr ss:[esp]
7C92E520 > 8D5424 08 lea edx,dword ptr ss:[esp+8]
7C92E524 CD 2E int 2E
7C92E526 C3 retn
7C92E527 90 nop
7C92E528 > 55 push ebp
7C92E529 8BEC mov ebp,esp
7C92E52B 9C pushfd
7C92E52C 81EC D0020000 sub esp,2D0
7C92E532 8985 DCFDFFFF mov dword ptr ss:[ebp-224],eax
7C92E538 898D D8FDFFFF mov dword ptr ss:[ebp-228],ecx
7C92E53E 8B45 08 mov eax,dword ptr ss:[ebp+8]
alt+K 我们可以看到调用堆栈: 主线程
地址 堆栈 函数过程 / 参数 调用来自 结构
008BF39C 77D19418 包含ntdll.KiFastSystemCallRet USER32.77D19416 008BF3D0
008BF3A0 77D2770A USER32.WaitMessage USER32.77D27705 008BF3D0
008BF3D4 77D249C4 USER32.77D2757B USER32.77D249BF 008BF3D0
008BF3FC 77D3A956 USER32.77D2490E USER32.77D3A951 008BF3F8
008BF6BC 77D3A2BC USER32.SoftModalMessageBox USER32.77D3A2B7 008BF6B8
008BF80C 77D663FD USER32.77D3A147 USER32.77D663F8 008BF808
008BF864 77D50853 USER32.MessageBoxTimeoutW USER32.77D5084E 008BF860
008BF884 77D66579 USER32.MessageBoxExW USER32.77D66574 008BF880
008BF888 00000000 hOwner = NULL
008BF88C 01911C00 Text = " 注册失败 .用户名或注册码错误!"
008BF890 018CC2B8 Title = "警告"
008BF894 00010030 Style = MB_OK|MB_ICONEXCLAMATION|MB_APPLMODAL|10000
008BF898 00000000 LanguageID = 0 (LANG_NEUTRAL)
008BF8A0 00458B98 USER32.MessageBoxW Unpack_.00458B92 008BF89C
008BF8A4 00000000 hOwner = NULL
008BF8A8 01911C00 Text = " 注册失败 .用户名或注册码错误!"
008BF8AC 018CC2B8 Title = "警告"
008BF8B0 00010030 Style = MB_OK|MB_ICONEXCLAMATION|MB_APPLMODAL|10000
008BF8F0 004041C6 包含Unpack_.00458B98 Unpack_.004041C4
008BF908 004090B6 Unpack_.00404160 Unpack_.004090B1
008BF940 00409844 Unpack_.00409030 Unpack_.0040983F
双击 USER32.MessageBoxW 后面的 Unpack_.00458B92
来到00458B92 FF15 80464B00 call dword ptr ds:[<&user32.MessageBoxW>>; USER32.MessageBoxW
00458B98 8B7424 44 mov esi,dword ptr ss:[esp+44]
00458B9C 8BF8 mov edi,eax
00458B9E E8 1D07FBFF call Unpack_.004092C0
00458BA3 8D4C24 1C lea ecx,dword ptr ss:[esp+1C]
00458BA7 893E mov dword ptr ds:[esi],edi
00458BA9 C746 08 0100000>mov dword ptr ds:[esi+8],1
00458BB0 E8 6B9AFAFF call Unpack_.00402620
00458BB5 8D4C24 2C lea ecx,dword ptr ss:[esp+2C]
00458BB9 E8 629AFAFF call Unpack_.00402620
00458BBE 5F pop edi
00458BBF 5E pop esi
00458BC0 5D pop ebp
00458BC1 33C0 xor eax,eax
向上找来到00458A1E C2 0800 retn 8
00458A21 83EC 2C sub esp,2C
00458A24 53 push ebx
00458A25 8B5C24 34 mov ebx,dword ptr ss:[esp+34]
00458A29 8B43 08 mov eax,dword ptr ds:[ebx+8]
00458A2C 55 push ebp
00458A2D 56 push esi
00458A2E 8BF1 mov esi,ecx
00458A30 8B4B 04 mov ecx,dword ptr ds:[ebx+4]
00458A33 894424 10 mov dword ptr ss:[esp+10],eax
00458A37 8B41 04 mov eax,dword ptr ds:[ecx+4]
00458A3A 57 push edi
00458A3B 50 push eax
00458A3C E8 22A6FFFF call Unpack_.00453063
00458A21 83EC 2C sub esp,2C处下断
运行程序 我们重新点击程序界面注册
程序被断下
F8一直跟到 提示"注册失败 .用户名或注册码错误!"的上一行
也就是到这里00458B92 FF15 80464B00 call dword ptr ds:[<&user32.MessageBoxW>>; USER32.MessageBoxW
00458B98 8B7424 44 mov esi,dword ptr ss:[esp+44]
00458B9C 8BF8 mov edi,eax
00458B9E E8 1D07FBFF call Unpack_.004092C0
00458BA3 8D4C24 1C lea ecx,dword ptr ss:[esp+1C]
观察OD右下角
出现这样008BF8A4 00000000 |hOwner = NULL
008BF8A8 01911C00 |Text = " 注册失败 .用户名或注册码错误!"
008BF8AC 018CC2B8 |Title = "警告"
008BF8B0 00010030 \Style = MB_OK|MB_ICONEXCLAMATION|MB_APPLMODAL|10000
008BF8B4 004A7F20 Unpack_.004A7F20
008BF8B8 008BFA00
008BF8BC 00000000
008BF8C0 00000000
008BF8C4 00010030 UNICODE "C:\Documents and Settings\All Users"
在" 注册失败 .用户名或注册码错误!"处 右键-数据窗口中跟随
在数据窗口中文本搜索 AGNMOBJECTNOTIFY 旁边就是注册码了
第一次写破文 大牛不要见笑
--------------------------------------------------------------------------------
【版权声明】: 本文原创于cmc5410, 转载请注明作者并保持文章的完整, 谢谢!
2012年07月11日 17:20:06
|