带壳调试Aspr的程序
.Aspr虽然有脱壳辅助脚本 但大多数Aspr都使用了SDK 或者其他方式来保护输入表 即便有脚本而修复往往是很复杂的 所以更多的时候我们争取采用带壳调试
http://www.toprecorders.com/download.htm
目标软件 录音机
OD载入程序 运行 出现NAG窗体后 F12暂停来到这里:
0045A822^\74 B8 JE SHORT MP3Recor.0045A7DC ; 上边是窗口的循环
0045A824 8945 F8 MOV DWORD PTR SS:,EAX ; 在这里下断
然后点试用 程序中断到0045A824这里 F8继续返回
0050EC94 833D 145B5200 00 CMP DWORD PTR DS:,0 ; 关键变量
0050EC9B 75 2B JNZ SHORT MP3Recor.0050ECC8
0050EC9D 8B0D A8615200 MOV ECX,DWORD PTR DS: ; MP3Recor.00527B70
0050ECA3 8B09 MOV ECX,DWORD PTR DS:
0050ECA5 B2 01 MOV DL,1
0050ECA7 A1 80E15000 MOV EAX,DWORD PTR DS:
0050ECAC E8 B375F4FF CALL MP3Recor.00456264
0050ECB1 8B15 44625200 MOV EDX,DWORD PTR DS: ; MP3Recor.00528528
0050ECB7 8902 MOV DWORD PTR DS:,EAX
0050ECB9 A1 44625200 MOV EAX,DWORD PTR DS:
0050ECBE 8B00 MOV EAX,DWORD PTR DS:
0050ECC0 8B10 MOV EDX,DWORD PTR DS:
0050ECC2 FF92 EC000000 CALL DWORD PTR DS: ; 这里弹出NAG窗口
0050ECC8 E8 2B8CFFFF CALL MP3Recor.005078F8
0050ECCD C3 RETN
修改为:
0050EC94 C605 145B5200 01 MOV BYTE PTR DS:,1 ; 关键变量
0050EC9B EB 2B JMP SHORT MP3Recor.0050ECC8
因为程序在使用中还有很多地址在检测DS: 所以必须要进行赋值 至此分析完毕 用dll也可 用loader也可 去了NAG,还是有未注册字样 原帖由 km159 于 2008-10-23 22:12 发表 https://www.chinapyg.com/images/common/back.gif
去了NAG,还是有未注册字样
你再看下帖子 我们去NAG的修改肯定不相同
注册部分在这里 也可以通过Patch来显示注册给XX
注册部分:
0050F46F 8338 00 CMP DWORD PTR DS:,0
0050F472 74 79 JE SHORT MP3Recor.0050F4ED
Others:
00520FBE 8338 00 CMP DWORD PTR DS:,0
00520FC1 75 31 JNZ SHORT MP3Recor.00520FF4
00521B18 8338 00 CMP DWORD PTR DS:,0
00521B1B 0F85 92000000 JNZ MP3Recor.00521BB3
00520C0F 8338 00 CMP DWORD PTR DS:,0
00520C12 0F94C2 SETE DL 老大都给出了结果哈,参考一下,学习一下, 俺也来弄个aspr补丁....
纯属备份一下代码.下次直接复制.../:09
// Foward declarations of functions included in this code module:
// Code By luck
// MP3xxx?什么东东的JJ?
// 2008.10.24
// Http://Www.ChinaPYG.CoM
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// TODO: Place code here.
CHAR PATH={0};
GetCurrentDirectory(100,PATH);
sprintf(PATH+strlen(PATH),"%s","\\MP3Recorder.exe");
STARTUPINFO INFO={sizeof(STARTUPINFO)};
PROCESS_INFORMATION INFORMATION;
ZeroMemory(&INFORMATION,sizeof(PROCESS_INFORMATION));
BOOL ISCREATE=CreateProcess(PATH,NULL,NULL,NULL,FALSE,CREATE_SUSPENDED,NULL,NULL,&INFO,&INFORMATION);
if(!ISCREATE)
{
MessageBoxA(NULL,"无法创建进程!没有找到主程序文件","提示信息:",0x40);
return 0;
}
ResumeThread(INFORMATION.hThread);
Sleep(600);
SuspendThread(INFORMATION.hThread);
BYTE MYREAD;
BYTE PACTH={0x01,0xEB};
ReadProcessMemory(INFORMATION.hProcess,(LPVOID)0x50EC94,&MYREAD,1,NULL);
if (MYREAD==0x83)
{
WriteProcessMemory(INFORMATION.hProcess,(LPVOID)0x50EEAF,&PACTH,1,NULL);
WriteProcessMemory(INFORMATION.hProcess,(LPVOID)0x525B14,&PACTH,1,NULL);
}
ResumeThread(INFORMATION.hThread);
ExitProcess(0);
return 0;
}
[ 本帖最后由 Luckly 于 2008-10-24 13:24 编辑 ] 楼上的牛哥,什么东东哟,看不懂呢
页:
[1]