首页
社区
课程
招聘
FINDWINDOWS检查窗口存在````````
发表于: 2005-9-6 22:00 5393

FINDWINDOWS检查窗口存在````````

2005-9-6 22:00
5393
这是一个游戏的登陆程序,这个程序可以检查到已开的本游戏程序,用的是FINDWINDOWSA,在程序中找个这个函数后,后面的跳转改完还是不能开新窗口,能帮忙看看怎么回事

* Reference To: USER32.FindWindowA, Ord:00E3h
                                  |
:0040100E FF1524624500            Call dword ptr [00456224]
:00401014 85C0                    test eax, eax
:00401016 741D                    je 00401035     这里的跳转
:00401018 55                      push ebp

* Possible StringData Ref from Data Obj ->"Launcher[JiangHu]"
                                  |
:00401019 6848814500              push 00458148

* Possible StringData Ref from Data Obj ->"[Error::FindWindow()]"
                                  |
:0040101E 6830814500              push 00458130
:00401023 55                      push ebp

跟进那个跳转就到这里了,

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00401016(C)
|
:00401035 E866040000              call 004014A0
:0040103A 85C0                    test eax, eax
:0040103C 751D                    jne 0040105B
:0040103E 55                      push ebp

* Possible StringData Ref from Data Obj ->"Launcher[JiangHu]"
                                  |
:0040103F 6848814500              push 00458148

然后再进另一个跳转到这里

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040103C(C)
|
:0040105B 8B7C245C                mov edi, dword ptr [esp+5C]
:0040105F 6A78                    push 00000078
:00401061 57                      push edi
:00401062 C744243030000000        mov [esp+30], 00000030
:0040106A C744243403000000        mov [esp+34], 00000003
:00401072 C744243830124000        mov [esp+38], 00401230
:0040107A 896C243C                mov dword ptr [esp+3C], ebp
:0040107E 896C2440                mov dword ptr [esp+40], ebp
:00401082 897C2444                mov dword ptr [esp+44], edi

* Reference To: USER32.LoadIconA, Ord:01BDh
                                  |
:00401086 FF1578624500            Call dword ptr [00456278]
:0040108C 68007F0000              push 00007F00
:00401091 55                      push ebp
:00401092 89442448                mov dword ptr [esp+48], eax

把那个跳转处的JE改成JNZ开程序(不论有没有窗口开着)就显示出错信息[Error::FindWindow()]",改成NOP不能运行,改成JMP能运行,但是在有窗口开着时还是能检查到,依然显示错误提示,看不太明白是怎么回事

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

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 103
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
没人帮忙看看吗?

在00401014 85C0                    test eax, eax 这行
EAX不论有没有另一程序运行都是0,那个FINDWINDOWA把得到的窗口信息放在哪里了呢 ?
在登陆程序开启游戏主程序时,可以断下来,主程序创建时错误提示就出现,但是出错提示,[Error::FindWindow()],断不下来,是不是在程序开始时就把这个错误提示放在了别的文件里面,在登陆程序运行时有两个文件NOTICE.DAT和PATCHINFO.DAT一闪就没了,这两个文件是起什么作用的?

新手不懂,请帮忙看看.
2005-9-9 17:46
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
HWND FindWindow(          LPCTSTR lpClassName,
    LPCTSTR lpWindowName
);

If the function succeeds, the return value is a handle to the window that has the specified class name and window name.

If the function fails, the return value is NULL.
2005-9-12 22:17
0
雪    币: 103
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
谢谢WINTERL的回复,自已看了好长时间,一直到昨天才弄的懂点了。 原来一直我都弄错了,这里的FINDWINDOWA是用来检测本窗口是否存在的,一开始就已经跳过去了,
就在
:00401016 741D                    je 00401035     这里的跳转JMP就可以了。

    昨天刚刚发现,但不是要解决这个跳转的问题,而是解决这个登陆程序所打开的另一个主程序所跳出来的错误提示,同样的提示信息把我给迷住了,这也体现出了对于问题根本就没有弄明白,但是那个主程序的提示信息应该怎么来下断呢?

    用函数根本断不下来啊,因为是从这个程序出发来开启的另一个程序,所以在这个程序里下断根本不起作用,用MESSAGEBOXA也不起作用,而且不能单独运行那个主程序,如果单独运行会提示错误,运行不了啊,怎么才能跟踪这种由一个进程开启另一进程,在另一进程中拦截错误提示呢?而且那个主程序用W32DASM打开后看不到有函数,是不是放在DLL文件里了?
请各位朋友指点下,谢谢!
    实在是搞不明白,如果要有这方面的贴子,给提供个链接自已去学也可以呵。再次谢谢!
2005-9-12 22:57
0
雪    币: 103
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
有高手知道的吗,给说下好吗?弄不明白怎么跟啊!
2005-9-16 01:58
0
游客
登录 | 注册 方可回帖
返回
//