能力值:
( LV2,RANK:10 )
26 楼
请告诉我您说的读取IP的位置 用什么命令下断点呢... 感谢高人再次知道迷津啊.相信应该是一个CALL 这个CALL是不是用来调用WIN API函数的? 我只是猜测,请高人告诉我该下怎样的断点来找到这个CALL 或者 关键跳
能力值:
( LV2,RANK:10 )
27 楼
自己好好 分析
一步 一步 跟
能力值:
( LV2,RANK:10 )
28 楼
hanzososo,请问哈你,你说的那个是一个软件吗?我也找类似的东东,只不过我太菜了,我是在找**游戏外挂的..................
能力值:
( LV2,RANK:10 )
29 楼
谢谢大哥的一步一步跟,感动啊,眼泪花花的 再次感谢您对我关爱
能力值:
( LV2,RANK:10 )
30 楼
看我脱壳的WG文件。下面是静态分析,只是方便找到合适中断的位置:
* Reference To: ws2_32.WSASocketA, Ord:0052h ;建立SOCKET
|
:1001380F FF1588D50410 Call dword ptr [1004D588]
:10013815 8BF0 mov esi, eax
:10013817 83FEFF cmp esi, FFFFFFFF
:1001381A 0F846D020000 je 10013A8D
:10013820 33C0 xor eax, eax
:10013822 66A1A0020610 mov ax, word ptr [100602A0]
:10013828 66C74424180200 mov [esp+18], 0002
:1001382F 50 push eax
* Reference To: ws2_32.htons, Ord:0009h ;设置端口
|
:10013830 FF158CD50410 Call dword ptr [1004D58C]
* Possible StringData Ref from Data Obj ->"192.168.1.2" ;看到了IP地址了?在这读呢。
|
:10013836 6890020610 push 10060290
:1001383B 668944241E mov word ptr [esp+1E], ax
* Reference To: ws2_32.inet_addr, Ord:000Bh ;设置网络地址
|
:10013840 FF1590D50410 Call dword ptr [1004D590]
:10013846 6A10 push 00000010
:10013848 8D4C241C lea ecx, dword ptr [esp+1C]
:1001384C 51 push ecx
:1001384D 56 push esi
:1001384E 89442428 mov dword ptr [esp+28], eax
* Reference To: ws2_32.connect, Ord:0004h
|
:10013852 FF1594D50410 Call dword ptr [1004D594] ;建立连接
:10013858 85C0 test eax, eax
:1001385A 0F852D020000 jne 10013A8D
。。。。。。。。。。。。。。。。。。。。。。下面的就有发送和接收信息自己好好分析
找到要中断的地址后就慢慢一步一步跟。
你静态分析看到那用OD直接到CTRL-G到需要中断的地址就好了。以后你能不能破就要看你的悟性了。
能力值:
( LV2,RANK:10 )
31 楼
静太分析就是用W32吧 对吗?高人 谢谢你的点睛之处啊.感动啊
能力值:
( LV2,RANK:10 )
32 楼
我用W32查了一晚上带代码,那代码是地球周长的3倍啊, 还是没找到哪个发送验证的CALL呀,是不是软件作者给分割了,程序运行起来又拼接起来呢? 还有,我用OD下 bp sendto 居然段不下了,说明一下,这个软件是VC++写的,壳被我脱了, OD居然提示我 bp sendto 是无效字符
bp WSASend // 无效字符
bp WSARecv // 无效字符
bp sendto //无效字符
bp recvfrom //断不下来 无效字符
bp closesocket //这个断下来一次,从新载入又断不下来了
能力值:
( LV2,RANK:10 )
33 楼
我也是在头疼爆破问题,不过能本地验证也好,反正差不多,我的是bp send 能下断的
能力值:
( LV2,RANK:10 )
34 楼
跟着高人学学啊
能力值:
( LV2,RANK:10 )
35 楼
高人多讲讲怎么找关键跳啊!!!!!!!!!!!!!
能力值:
( LV2,RANK:10 )
36 楼
有高人指点了,但是我比较苯.静态分析中找不到他指点哪个地方,因为吧,WG没有可显示的字符串的.我有W32加载原文件.挖.......长度是地球周长的2倍哦
想知道对于这样的情况 应该怎么找突破口呢,期待指导....................哦米托佛
能力值:
( LV2,RANK:10 )
37 楼
楼主和一样都在想破挂哈,我感觉你比较近了,看下这个文章
http://bbs.pediy.com/showthread.php?t=41785
我的是照这个葫芦画了,也找到那步说:验证失败的地方了,就是不知道怎么下手
能力值:
( LV2,RANK:10 )
38 楼
接着继续我的爆破之路:
OD载入目标程序:
下断:
bpx closesocket
反汇编代码窗口显示如下:
71A29635 90 nop
71A29636 90 nop
71A29637 90 nop
71A29638 90 nop
71A29639 > $ 8BFF mov edi, edi //断在这里,看到8BFF 相信是验证错误处. 或者是验证失败处
71A2963B . 55 push ebp
71A2963C . 8BEC mov ebp, esp
71A2963E . 51 push ecx
71A2963F . 813D 2840A371>cmp dword ptr [71A34028], 71A29448
71A29649 . 56 push esi
71A2964A .^ 0F84 AEF3FFFF je 71A289FE
71A29650 > E8 2C90FFFF call 71A22681
71A29655 . 85C0 test eax, eax
71A29657 . 8945 FC mov dword ptr [ebp-4], eax
71A2965A .^ 0F85 B4F3FFFF jnz 71A28A14
此时寄存器显示以下内容:
EAX 71A29639 WS2_32.closesocket
ECX 00C5E160
EDX 7C92EB94 ntdll.KiFastSystemCallRet
EBX 00C5E160
ESP 00123518
EBP 0012354C
ESI 00C5E160
EDI 001236B1
EIP 71A29639 WS2_32.closesocket
C 0 ES 0023 32位 0(FFFFFFFF)
P 1 CS 001B 32位 0(FFFFFFFF)
A 0 SS 0023 32位 0(FFFFFFFF)
Z 1 DS 0023 32位 0(FFFFFFFF)
S 0 FS 003B 32位 7FFDF000(FFF)
T 0 GS 0000 NULL
D 0
O 0 LastErr ERROR_SUCCESS (00000000)
EFL 00000246 (NO,NB,E,BE,NS,PE,GE,LE)
ST0 empty +UNORM 0201 00000000 804DF7EC
ST1 empty -UNORM EB94 00123CC8 00000000
ST2 empty 4.0986295720800728480e+1272
ST3 empty +UNORM 02A0 0000003B B88699F0
ST4 empty +UNORM 003B 00123DA8 00000000
ST5 empty 1.0000000000000000000
ST6 empty 1.0000000000000000000
ST7 empty 1.0000000000000000000
3 2 1 0 E S P U O Z D I
FST 4020 Cond 1 0 0 0 Err 0 0 1 0 0 0 0 0 (EQ)
FCW 027F Prec NEAR,53 掩码 1 1 1 1 1 1 注释窗口显示如下内容:
eid=001236B1
本地调用来自 71A29B25, 71A29B4B
堆栈窗口显示入下内容:
00123518 73D499B8 /CALL 到 closesocket 来自 MFC42.73D499B3
0012351C 000000BC \Socket = BC
00123520 00C5E160
00123524 0044E502 返回到 11.0044E502
00123528 00000000
0012352C 005155D7 11.005155D7
00123530 001236B1
00123534 00C61675
00123538 00000000
0012353C 01390744 ASCII "193.238.148.196"
00123540 00123EEC
00123544 0000BB01
00123548 004C45BF 返回到 11.004C45BF 来自 11.004B0709
0012354C 00C5F060
00123550 0043B94A 返回到 11.0043B94A 来自 11.0044E7A0
00123554 001235A8
00123558 00000000
能力值:
( LV2,RANK:10 )
39 楼
这里的11.004C45BF 和11.0043B94A 这里的11 是我脱客后改的名字 呵呵 有才吧
能力值:
( LV2,RANK:10 )
40 楼
我感觉我们还是基础不好,因此不知道如何下手
能力值:
( LV2,RANK:10 )
41 楼
这个IP地址:193.238.148.196 我自己跟踪了一下,不是验证服务器的IP地址, 一个游戏分很多区 ,这个IP就是其中一个区的IP.... 呵呵 我找回了点自信了呀....继续实况转播中,有什么想说的,想讨论的,也来说说嘛
能力值:
( LV2,RANK:10 )
42 楼
我根据堆栈显示地址 CTRL+G 0044E7A0 来到这里
0044E78C .- E9 75B60500 jmp 004A9E06
0044E791 . 8D6424 48 lea esp, dword ptr [esp+48]
0044E795 . E9 B7000000 jmp 0044E851
0044E79A D8 db D8
0044E79B 81 db 81
0044E79C 90 nop
0044E79D 90 nop
0044E79E 90 nop
0044E79F 90 nop
0044E7A0 $ 55 push ebp //0044E7A0 貌似关键的地方
0044E7A1 . 8BEC mov ebp, esp
0044E7A3 . 83EC 10 sub esp, 10
0044E7A6 . 53 push ebx
0044E7A7 . 56 push esi
0044E7A8 . 8BD9 mov ebx, ecx
0044E7AA . 68 E459E5A8 push A8E559E4
0044E7AF . E8 E80A0000 call 0044F29C
0044E7B4 . 0FC0F0 xadd al, dh
0044E7B7 . 8B55 00 mov edx, dword ptr [ebp]
0044E7BA . 2C 66 sub al, 66
0044E7BC . 18F0 sbb al, dh
0044E7BE . 83C5 02 add ebp, 2
0044E7C1 . 51 push ecx
0044E7C2 . 60 pushad
0044E7C3 . 36:8A02 mov al, byte ptr ss:[edx]
0044E7C6 . 66:892C24 mov word ptr [esp], bp
0044E7CA . 66:8945 00 mov word ptr [ebp], ax
0044E7CE . 60 pushad
0044E7CF . 8D6424 44 lea esp, dword ptr [esp+44]
0044E7D3 .- E9 9AB30500 jmp 004A9B72
0044E7D8 > C60424 66 mov byte ptr [esp], 66
0044E7DC . 9C pushfd
0044E7DD . 8F0424 pop dword ptr [esp]
0044E7E0 . 68 E052BB4E push 4EBB52E0 本地调用来自 00430FB6, 0043B945, 0044E567 0012276B /74 2A je short 00122797 //好大的跳啊
0012276D |0206 add al, byte ptr [esi]
0012276F |00B6 00000000 add byte ptr [esi], dh
00122775 |0000 add byte ptr [eax], al
00122777 |0001 add byte ptr [ecx], al
00122779 |0000 add byte ptr [eax], al
反汇编窗口:
¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥关键部位了
0044E7A0 $ 55 push ebp
0044E7A1 . 8BEC mov ebp, esp
0044E7A3 . 83EC 10 sub esp, 10
0044E7A6 . 53 push ebx
0044E7A7 . 56 push esi
0044E7A8 . 8BD9 mov ebx, ecx
0044E7AA . 68 E459E5A8 push A8E559E4
0044E7AF . E8 E80A0000 call 0044F29C
0044E7B4 . 0FC0F0 xadd al, dh
0044E7B7 . 8B55 00 mov edx, dword ptr [ebp]
0044E7BA . 2C 66 sub al, 66
0044E7BC . 18F0 sbb al, dh
0044E7BE . 83C5 02 add ebp, 2
0044E7C1 . 51 push ecx
0044E7C2 . 60 pushad
0044E7C3 . 36:8A02 mov al, byte ptr ss:[edx]
寄存器窗口:
EAX 00000009
ECX 00C5E160
EDX 00123664 ASCII "hongwan1" ///这个不就是我的游戏帐号吗 怎么在这里啊??
EBX 00C53CF8
ESP 00123548
EBP 00123C3C
ESI 00C61675
EDI 0012366D
注释窗口:
ebp=00123C3C
本地调用来自 00430FB6, 0043B945, 0044E567
堆栈窗口
00123548 00430FBB 返回到 11.00430FBB 来自 11.0044E7A0
0012354C 00123564
00123550 00000000
00123554 00000000
00123558 00123EEC
0012355C 00123EEC
00123560 0040F290 11.0040F290
00123564 01388D38
能力值:
( LV2,RANK:10 )
43 楼
到这里 发现程序不提示我受到限制了,但是提示我连接超时拉.....杂回事啊??
能力值:
( LV2,RANK:10 )
44 楼
哈哈 相信这个就是验证的关键CALL拉 看代码:
0040EC94 . E8 C9940400 call 00458162 ///我断在这里
0040EC99 . 8B5424 48 mov edx, dword ptr [esp+48]
0040EC9D . 8B6C24 5C mov ebp, dword ptr [esp+5C]
0040ECA1 . 8B5C24 54 mov ebx, dword ptr [esp+54]
0040ECA5 . 899424 9C0000>mov dword ptr [esp+9C], edx
0040ECAC . 8BD5 mov edx, ebp
0040ECAE . 894424 50 mov dword ptr [esp+50], eax
0040ECB2 . 2BD3 sub edx, ebx
0040ECB4 . B8 67666666 mov eax, 66666667
0040ECB9 . F7EA imul edx
0040ECBB . 8B4C24 40 mov ecx, dword ptr [esp+40]
大家看寄存器:
EAX 00000000
ECX 00123EEC
EDX 00150608
EBX 00C80924
ESP 001236EC
EBP 77D2F383 USER32.SendMessageA
ESI 00123EEC
EDI 77D1B6D4 USER32.GetWindowRect
EIP 0040EC94 de_Perfe.0040EC94
能力值:
( LV2,RANK:10 )
45 楼
一起研究啊。。
能力值:
( LV2,RANK:10 )
46 楼
0044F1BD . 68 2C3A4700 push 00473A2C ; ASCII "游戏帐号已过
期"
0044F1C2 . 6A 01 push 1
0044F1C4 . 51 push ecx
0044F1C5 . E8 E6F5FBFF call 0040E7B0
0044F1CA . 83C4 0C add esp, 0C
0044F1CD . EB 26 jmp short 0044F1F5
0044F1CF > 68 F4010000 push 1F4
0044F1D4 . E8 44960700 call 004C881D
能力值:
( LV2,RANK:10 )
47 楼
0044F157 . 68 00020000 push 200
0044F15C . 56 push esi
0044F15D . E8 3E58FCFF call 004149A0
0044F162 . 8B0D F8574700 mov ecx, dword ptr [4757F8]
0044F168 . E8 1357FCFF call 00414880
0044F16D . E9 83000000 jmp 0044F1F5
0044F172 > 84C0 test al, al
0044F174 74 74 je short 0044F1EA
0044F176 . 8B8B 3C070000 mov ecx, dword ptr [ebx+73C]
0044F17C . 41 inc ecx
0044F17D . 8BC1 mov eax, ecx
0044F17F . 898B 3C070000 mov dword ptr [ebx+73C], ecx
0044F185 . 83F8 02 cmp eax, 2
0044F188 7E 45 jle short 0044F1CF
0044F18A . C683 38070000>mov byte ptr [ebx+738], 0
0044F191 . C783 3C070000>mov dword ptr [ebx+73C], 0
0044F19B . 8B15 F8574700 mov edx, dword ptr [4757F8]
0044F1A1 . 6A 00 push 0
0044F1A3 . 68 03800000 push 8003
0044F1A8 . 68 11010000 push 111
0044F1AD . 8B42 20 mov eax, dword ptr [edx+20]
0044F1B0 . 50 push eax
0044F1B1 . E8 A9DE0900 call 004ED05F
0044F1B6 . 90 nop
0044F1B7 8B0D F8574700 mov ecx, dword ptr [4757F8]
0044F1BD . 68 2C3A4700 push 00473A2C ; ASCII "游戏帐号已过期" //这个是突破口 但是我把上面2个跳改成 JMP 发现哦连接游戏失败.相信应该是软件把我的通讯给段了,找了一晚上没找到哪个地方哦.杂办呢?
0044F1C2 . 6A 01 push 1
0044F1C4 . 51 push ecx
0044F1C5 E8 E6F5FBFF call 0040E7B0
能力值:
( LV2,RANK:10 )
48 楼
说实话,破这个软件,对我这样的菜鸟来说,根本是不合适.但是我来看雪的目的就是学习的,既然学习,那就要认真的学.不能半途而费.知难而退. 所以我会继续努力研究.现在只想朋友们给我打打气 哈
能力值:
( LV2,RANK:10 )
49 楼
但愿你能成功!成功一次你就有自信了!
成功不了也不要懊恼!胜败乃兵家常事!
能力值:
( LV2,RANK:10 )
50 楼
看不懂,好像天书一样!