能力值:
( LV2,RANK:10 )
|
-
-
2 楼
你跟一下程序 看是不是记录到某个文件或是注册表中了 然后对症下药
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
下硬件继点试下
|
能力值:
( LV3,RANK:36 )
|
-
-
4 楼
确实有个文件存了用户名 密码没有,在OPENFILE下断也断不下来
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
这个最好是trace一下两种情况,比较一下执行过程的区别
1. 刚安装,没有输入过任何注册信息
2. 输入过注册信息
两个不同的地方应该是2比1多了注册检查
找到地方就可以下断点了
|
能力值:
( LV9,RANK:370 )
|
-
-
6 楼
弹 对话框提示注册的,通用方法: bp MessageBoxA,bp MessageBoxW
|
能力值:
( LV3,RANK:36 )
|
-
-
7 楼
下了 没断到什么
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
你搜索一下 对话框中的提示字符串, 看看有没有, 有的话可能就在那附近, 好好看看
|
能力值:
( LV3,RANK:36 )
|
-
-
9 楼
重启验证 搜过搜不到东西
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
找个注册表监视器,你先假注册下,获取字符串 ,然后OD载入,查找字符串,下断点,单步进入
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
ProcessMonitor看一下先
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
试一下 你在按 button确定的时候 断下!
教程:http://hi.baidu.com/tomorrow93/item/d58d78f8ece3180bc6dc45f2
!!!!!!!!!!
求看雪币, 我要成为 会员啊!!!!!!!!!!
MFC程序按钮入口地址查找方法//用OD装入MFC程序运行起来,在OD里 查看->窗口 打开窗口面板 在所要的中断按钮右键 选"在ClassProc上设消息断点",消息里选"202 WM_LBUTTONUP",好了按确定!
//这样完成后点击按钮时OD就在77D3AFFE中断了下来
77D3AFFE > 8BFF mov edi, edi
77D3B000 55 push ebp
77D3B001 8BEC mov ebp, esp
77D3B003 8B4D 08 mov ecx, dword ptr ss:[ebp+8]
77D3B006 56 push esi
77D3B007 E8 C4D4FDFF call USER32.77D184D0
77D3B00C 8BF0 mov esi, eax
77D3B00E 85F6 test esi, esi
77D3B010 74 38 je short USER32.77D3B04A
//这里是USER32领空!所以我们要回到程序领空,在OD菜单里 查看->内存 在我们程序的.text区断访问设置中断
//然后F9运行,OD就在004019C8断了下来,这里就是我们程序领空了
004019C2 .- FF25 14204000 jmp dword ptr ds:[<&MFC42.#5163_?OnWndMsg@CWnd@@MAEHIIJPAJ@Z>]
004019C8 .- FF25 18204000 jmp dword ptr ds:[<&MFC42.#6374_?WindowProc@CWnd@@MAEJIIJ@Z>]
004019CE .- FF25 1C204000 jmp dword ptr ds:[<&MFC42.#4353_?OnAmbientProperty@CWnd@@UAEHP>
004019D4 .- FF25 20204000 jmp dword ptr ds:[<&MFC42.#3798_?GetSuperWndProcAddr@CWnd@@MAE>
004019DA .- FF25 24204000 jmp dword ptr ds:[<&MFC42.#4837_?OnNotify@CWnd@@MAEHIJPAJ@Z>]
004019E0 .- FF25 28204000 jmp dword ptr ds:[<&MFC42.#4441_?OnCommand@CWnd@@MAEHIJ@Z>]
//但不是我们所要找的位置,还要继续分析.这里是最重要的了,在这地方有N多的连续jmp指令,我们向下查找,
//找到OnCmdMsg,也就是下面的00401B66,在00401B66按F2设置中断
00401B66 .- FF25 30214000 jmp dword ptr ds:[<&MFC42.#4425_?OnCmdMsg@CDialog@@UAEHIHPAXPA>;
00401B6C .- FF25 34214000 jmp dword ptr ds:[<&MFC42.#3597_?GetRuntimeClass@CDialog@@UBEP>;
00401B72 $- FF25 38214000 jmp dword ptr ds:[<&MFC42.#324_??0CDialog@@QAE@IPAVCWnd@@@Z>] ;
//再F9运行起来 程序终于在00401B66断了下来
//然后F8让它执行下一步,运行到这里,这里是MFC领空
73D9DE90 > 8BFF mov edi, edi
73D9DE92 55 push ebp
73D9DE93 8BEC mov ebp, esp
73D9DE95 53 push ebx
73D9DE96 8B5D 08 mov ebx, dword ptr ss:[ebp+8]
73D9DE99 56 push esi
73D9DE9A 57 push edi
73D9DE9B FF75 14 push dword ptr ss:[ebp+14]
73D9DE9E 8B7D 0C mov edi, dword ptr ss:[ebp+C]
73D9DEA1 FF75 10 push dword ptr ss:[ebp+10]
//再像上面的 在OD菜单里 查看->内存 在我们程序的.text区断访问设置中断
//再F9运行起来,在00401340中断下来,这里虽然是程序自己领空,但还不是我我们所要地址
00401340 . B8 20234000 mov eax, MyCalcul.00402320
00401345 . C3 retn
//F8两次后,又到MFC的73D32383 位置
73D32383 /EB 15 jmp short MFC42.73D3239A
73D32385 |FF75 08 push dword ptr ss:[ebp+8]
73D32388 |FF75 0C push dword ptr ss:[ebp+C]
73D3238B |53 push ebx
73D3238C |FF76 04 push dword ptr ds:[esi+4]
73D3238F |E8 DAFEFFFF call MFC42.#1145_?AfxFindMessageEntry@@YGPBUAFX_MSGMAP_ENTRY@@P>
73D32394 |85C0 test eax, eax
//这时还要 像上面的 在OD菜单里 查看->内存 在我们程序的.text区断访问设置中断
//F9运行起来,终在00401590断了下来 这里就是入口地址了!!
00401590 . 83EC 64 sub esp, 64
00401593 . A1 24304000 mov eax, dword ptr ds:[403024]
00401598 . 66:8B15 2C304>mov dx, word ptr ds:[40302C]
0040159F . 53 push ebx
004015A0 . 56 push esi
004015A1 . 8BF1 mov esi, ecx
//以上地址会因程序的不同而不一样,但只要是MFC程序,按这个方法来找出入口地址都会找到的~
|