- UID
- 2198
注册时间2005-6-29
阅读权限255
最后登录1970-1-1
副坛主
该用户从未签到
|
帮一朋友简单分析一下 程序可能是没有ASCII 程序注册失败有对话框弹出 那我们就先查看一下API 用野猪OD来调试
下BP MessageBoxA
77D5058A > 8BFF MOV EDI,EDI
77D5058C 55 PUSH EBP
77D5058D 8BEC MOV EBP,ESP
77D5058F 833D BC04D777 0>CMP DWORD PTR DS:[77D704BC],0
77D50596 74 24 JE SHORT USER32.77D505BC
0013EF44 10062186 返回到 krnln.10062186 来自 USER32.MessageBoxA
0013EF48 00000000
0013EF4C 0040EC92 **助手.0040EC92
0013EF50 100E3DE0 krnln.100E3DE0
F8单步返回到程序凌空后 到句柄设置断点:
0042C9BF 55 PUSH EBP
0042C9C0 8BEC MOV EBP,ESP
0042C9C2 81EC 38000000 SUB ESP,38
0042C9C8 C745 FC 0000000>MOV DWORD PTR SS:[EBP-4],0
0042C9CF C745 F8 0000000>MOV DWORD PTR SS:[EBP-8],0
0042C9D6 C745 F4 0000000>MOV DWORD PTR SS:[EBP-C],0
0042C9DD C745 F0 0000000>MOV DWORD PTR SS:[EBP-10],0
0042C9E4 C745 EC 0000000>MOV DWORD PTR SS:[EBP-14],0
0042C9EB C745 E8 0000000>MOV DWORD PTR SS:[EBP-18],0
0042C9F2 C745 E4 0000000>MOV DWORD PTR SS:[EBP-1C],0
0042C9F9 C745 E0 0000000>MOV DWORD PTR SS:[EBP-20],0
0042CA00 6A FF PUSH -1
0042CA02 6A 08 PUSH 8
0042CA04 68 41000116 PUSH 16010041
0042CA09 68 3D000152 PUSH 5201003D
0042CA0E E8 F4610000 CALL **助手.00432C07 ; 取邮箱
0042CA13 83C4 10 ADD ESP,10
0042CA16 8945 DC MOV DWORD PTR SS:[EBP-24],EAX
0042CA19 6A FF PUSH -1
0042CA1B 6A 08 PUSH 8
0042CA1D 68 43000116 PUSH 16010043
0042CA22 68 3D000152 PUSH 5201003D
0042CA27 E8 DB610000 CALL **助手.00432C07 ; 取KEY
0042CA2C 83C4 10 ADD ESP,10
0042CA2F 8945 D8 MOV DWORD PTR SS:[EBP-28],EAX
0042CA32 8D45 D8 LEA EAX,DWORD PTR SS:[EBP-28]
0042CA35 50 PUSH EAX
0042CA36 8D45 DC LEA EAX,DWORD PTR SS:[EBP-24]
0042CA39 50 PUSH EAX
0042CA3A E8 D289FFFF CALL **助手.00425411 ; 程序算法CALL
0042CA3F 8945 D4 MOV DWORD PTR SS:[EBP-2C],EAX ; EAX=1 则代表OK
0042CA42 8B5D DC MOV EBX,DWORD PTR SS:[EBP-24]
0042CA45 85DB TEST EBX,EBX
0042CA47 74 09 JE SHORT **助手.0042CA52
0042CA49 53 PUSH EBX
0042CA4A E8 94610000 CALL **助手.00432BE3
0042CA4F 83C4 04 ADD ESP,4
0042CA52 8B5D D8 MOV EBX,DWORD PTR SS:[EBP-28]
0042CA55 85DB TEST EBX,EBX
0042CA57 74 09 JE SHORT **助手.0042CA62
0042CA59 53 PUSH EBX
0042CA5A E8 84610000 CALL **助手.00432BE3
0042CA5F 83C4 04 ADD ESP,4
0042CA62 837D D4 01 CMP DWORD PTR SS:[EBP-2C],1
0042CA66 0F85 73050000 JNZ **助手.0042CFDF ; 这里跳向注册OVER
跟进算法CALL看看
0042575F 83C4 08 ADD ESP,8
00425762 E8 95F9FFFF CALL **助手.004250FC
00425767 8945 DC MOV DWORD PTR SS:[EBP-24],EAX ; 经过上方的运算 KEY出现
0042576A 8B45 DC MOV EAX,DWORD PTR SS:[EBP-24]
0042576D 50 PUSH EAX
0042576E FF75 E0 PUSH DWORD PTR SS:[EBP-20]
00425771 E8 5387FFFF CALL **助手.0041DEC9
00425776 83C4 08 ADD ESP,8
00425779 83F8 00 CMP EAX,0
0042577C B8 00000000 MOV EAX,0
00425781 0F94C0 SETE AL ; 暴破点
00425784 8945 D8 MOV DWORD PTR SS:[EBP-28],EAX ; 将代表是否注册的信息写入内存
启动时的判断在这里:
0042477B E8 910C0000 CALL **助手.00425411
00424780 8945 C8 MOV DWORD PTR SS:[EBP-38],EAX ; EAX=1 则代表OK
00424783 837D C8 01 CMP DWORD PTR SS:[EBP-38],1
00424787 0F85 43000000 JNZ **助手.004247D0
OK 点到为止 算法部分不再多看 只在简述使用API下断的方法 没什么技术含量 还望大家以技术交流为主 支持国软发展
|
评分
-
查看全部评分
|