__declspec(naked) BOOL MyCheck()
{
__asm{
mov dword ptr ss:,1
ret
}
}
int _tmain(int argc, _TCHAR* argv[])
{
DWORD Export_fun_RVA=0x1246;//导出函数偏移
DWORD Call_addr_RVA = 0x1710;//Check
HANDLE hDLL = LoadLibrary(L"CrackMe.dll");
std::cout << "dodule:"<<std::hex << hDLL << std::endl;;
if (hDLL)
{
//Patch
__asm mov dword ptr ds:,0x1 //cmp success
DWORD oldProtect;
if (VirtualProtect((LPVOID)(Call_addr_RVA+(DWORD)hDLL), 4096, PAGE_EXECUTE_READWRITE, &oldProtect))
{
inlineHook((LPVOID)(Call_addr_RVA+(DWORD)hDLL),MyCheck);//HOOK函数的ret
}
VirtualProtect((LPVOID)(Call_addr_RVA + (DWORD)hDLL), 4096, oldProtect, &oldProtect);
DWORD funaddr = (DWORD)hDLL + Export_fun_RVA;
std::cout << "funcaddr:"<<funaddr << std::endl;
__asm call funaddr
}
system("PAUSE");
FreeLibrary(HMODULE( hDLL));
return 0;
}
Ps:。。这很简单嘛 本帖最后由 zbnysjwsnd8 于 2017-9-9 12:56 编辑
放到CrackMe.dll的目录下然后打开Loader.exe即可。
下次发cm请发到cm区,那里下载附件系统不收cb zbnysjwsnd8 发表于 2017-9-9 12:35
放到CrackMe.dll的目录下然后打开Loader.exe即可。
第一次见到这样只有一个DLL文件的,我用OD加载了,该如何操作呢 改了一个全局变量和一个返回值
楼主要习惯在蹂躏中成长{:17_1059:} byh3025 发表于 2017-9-9 13:08
第一次见到这样只有一个DLL文件的,我用OD加载了,该如何操作呢
他的验证在dll的导出函数里面。 zbnysjwsnd8 发表于 2017-9-9 20:36
他的验证在dll的导出函数里面。
这样的单个DLL依托什么运行呢 byh3025 发表于 2017-9-9 20:49
这样的单个DLL依托什么运行呢
我不是发了一个Loader了么
这个Loader就是调用了这个DLL的导出函数而已
一共调用两次
第一次调用然后修改一个全局变量最后再调用一次。
你去分析一下 很多个工程师写出来的软件都能被破解,你这一个人写的应该也能破吧,还是有很多大神的
页:
[1]
2