首页
社区
课程
招聘
[推荐]给个破解题目(自己写的软件),求破
发表于: 2011-5-4 20:53 11226

[推荐]给个破解题目(自己写的软件),求破

2011-5-4 20:53
11226
今天发个自己写的破解题目,不是很难,但是也不是很简单!  当然对于高手来说是很简单的!但也希望高手指点!

要求: 1.
              我给的附件里面有2个文件,一个TestA.exe ,一个Tm.dll   都没有壳. 所以,不能用修改文件来达到破解的目的!

        2.    把Tm.dll  注入到TestA.exe 里面,要求 目标文件(TestA.exe)不关闭.

        3.   注入用工具是可以的,这个不要求写程序!

        4.  不论你采用什么方法,只要保证Tm.dll 在TestA.exe 的进程空间,且保证程序不关闭.当然不能直接修改我的任何资源(包括我的TestA.exe的标题),允许在内存里面任意修改!

附注:  用内存补丁的形式来实现!

]如果有可以实现的人,希望跟帖!说明你破解的方法!( 不要把这个问题想得太简单!其实不简单,期待你的回答!)

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

上传的附件:
收藏
免费 0
支持
分享
最新回复 (18)
雪    币: 22
活跃值: (458)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
if ( !strcmp("liuqiangni", "crackerme") )
    {
      MessageBoxA(0, "恭喜你,破解成功!", "提示", 0);
      return 1;
    }
2011-5-4 21:08
0
雪    币: 458
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
2011-5-4 21:20
0
雪    币: 1149
活跃值: (888)
能力值: ( LV13,RANK:260 )
在线值:
发帖
回帖
粉丝
4
不知道lz 啥意思,不能修改文件...这句话,那验证部分你设计 那么样,怎么达到,
再说,直接将 crackmei 数据修改为liuqiangni ,再在 test 加入 tm.dll 即可..
lz 的意思 使用代码 实现 还是啥...
2011-5-4 22:33
0
雪    币: 69
活跃值: (157)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
5
所以我说这个题目不是个简单的题目啊,按我的要求,是用内存补丁实现,那么你用别的方法当然困难了,文件我没有加壳,你直接改文件那我这个题目不是白出了,新手都OK吧! 所以不要把这题想得太简单了.按我的要求做做,你就明白了!  大家努力!  这个题目是个很现实的问题!

越是简单的问题,越能看出你的本事!  我很相信这句话!

提示: 1.内存补丁.  2,需要自己编程来实现一些东西(DLL 内部的一些东西不明白的同学还是快补补吧!)
2011-5-4 23:04
0
雪    币: 69
活跃值: (157)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
6
注意:  题目是要把 Tm.dll 注入到TestA.exe中  ,也就是先运行TestA.exe,然后注入Tm.dll,我不管你用什么方法,只要不直接修改我的程序都可以(当然内存里面修改是可以的).你可以假设我这个2个程序都加上了你脱不掉的强壳.
2011-5-4 23:08
0
雪    币: 38
活跃值: (52)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
哥,你就直接说明你的用意吧,我怕你勉强摆迷魂阵,会把你弄晕的
2011-5-4 23:41
0
雪    币: 270
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
看不懂楼主的意思到底是啥
2011-5-5 05:21
0
雪    币: 270
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
要求: 1.
        我给的附件里面有2个文件,一个TestA.exe ,一个Tm.dll   都没有壳. 所以,不能用修改文件来达到破解的目的!

        2.    把Tm.dll  注入到TestA.exe 里面,要求 目标文件(TestA.exe)不关闭.

**************************************************************************

纵观楼主的俩要求,也没要求DLL到底是弹出失败,还是正确,要是这样的话,直接修改TestA.exe的标题名不就达到要求了。
2011-5-5 05:46
0
雪    币: 1149
活跃值: (888)
能力值: ( LV13,RANK:260 )
在线值:
发帖
回帖
粉丝
10
你是想 动态获取 加载基址子,该偏移+基址的 数据.如果是这样.
那就 hook loadlibrary ,获得base + vra 在写数据....lz题目既然出来了,就明确一下啊...
2011-5-5 07:31
0
雪    币: 69
活跃值: (157)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
11
我的意思还不明白么,很容易理解的呀. 注入保证程序不关闭,就是要让程序执行我DLL 的DllMain()初始化的时候不要执行我的关闭函数,或者你改掉跳转也行,只不过不要直接修改资源就OK
2011-5-5 10:11
0
雪    币: 69
活跃值: (157)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
12
其实你的理解是对的,我的意思是大家自己写个1.dll ,来LoadLibrary("Tm");然后修改Tm.dll 里面的跳转,达到目的.(其中必然要用到基址和重定位,这个好解决).  然后我们把 1.dll 注入目标程序里面.  但是这里面有个很大的问题:  就是我们虽然注入了,也加载了我们的Tm.dll  但是LoadLibrary() 执行的时候任然会先执行DllMain的初始化,所以验证任然是不成功的,然后才会执行我们的修改!
2011-5-5 10:17
0
雪    币: 2105
活跃值: (424)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
13
hook SendMessage 不让调用wm_close就行了
2011-5-5 10:27
0
雪    币: 69
活跃值: (157)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
14
感谢大家的热心.现在缩小范围:  必须自己另外编写一个DLL,让这个DLL去加载我的Tm.dll,然后补丁之.再把自己写的DLL注入到目标程序,达到目标程序不关闭的作用! 大家可否做到..
2011-5-5 13:13
0
雪    币: 270
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
直接拦截进入关键函数段之前的任意一个API不就可以补丁之了。
2011-5-5 16:52
0
雪    币: 33
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
.版本 2

.判断开始 (进程是否存在 (“dnf.exe”))
    写到文件 (取System32目录 () + “\test.dll”, #辅助dll)  
    a = _装载DLL (“test.dll”)
    b = _取库函数地址 (a, “RunDllHostCallBack”)
    写内存字节集 (取进程ID (“dnf.exe”), a + 十六到十 (“E2C9”), 还原为字节集 (“E8093CFFFF”))
    写内存字节集 (取进程ID (“dnf.exe”), a + 十六到十 (“CA70”), 还原为字节集(“909090909090”))  
    写内存字节集 (取进程ID (“dnf.exe”), a + 十六到十 (“C16A”), 还原为字节集 “909090909090”))  
    调用子程序2 (b, 0, 0, 0, , , , , , , , , )
    信息框 (“破解成功!”, 0, )
.默认
    信息框 (“dnf不存在!”, 0, )

这是破解一个DNF外挂时的dll补丁源码  (外挂的dll是加壳的)我们是给原dll补丁  然后再注入DNF.EXE
2011-5-7 10:41
0
雪    币: 267
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
附件上传错了,说下自己的思路,得下周才能上传附件了.
按lz说的,关键是loadlibrary加载dll,会在函数返回之前调用dll的dllmain函数,而lz给出的dll关键就是在dllmain函数中打补丁,所以自己首先想到就是在dll已经加载到内存中,而没有有调用dllmain之前下钩子打补丁(od在调试dll的时候,也用到类似这种方法).
2011-5-7 18:14
0
雪    币: 69
活跃值: (157)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
18
关键是这个补丁怎么打,期待你的特别的回答!
2011-5-7 23:52
0
雪    币: 267
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
#define PATCH_OFFSET 0x7070
#define TARGET_OFFSET 0x1187
#define TARGET_CODE1 0x8B0855FF
#define TARGET_CODE2 0x5E5F5BE6
#define JMP_CODE 0xE9

HMODULE g_hNtdll = NULL;
char g_szBuf[MAXBYTE] = {0};
char *g_pTmDll = "Tm.dll";
char *g_pStr = "crackerme";

void __declspec( naked ) FilterFun()
{	
	__asm
	{
		pushad
			 
		push MAXBYTE
		push offset g_szBuf
		push dword ptr [ebp+0xC] // Module base
		mov eax, GetModuleFileNameA
		call eax
		test eax, eax
		je RETURN

		mov eax, StrStrA
		push g_pTmDll
		push offset g_szBuf
		call eax
		test eax, eax
		je RETURN

		// patch
		mov edi, PATCH_OFFSET
		add edi, dword ptr [ebp+0xc]
		mov eax, StrCpyA
		push g_pStr
		push edi
		call eax
			
RETURN:
		popad
		
		call dword ptr [ebp+8] 
		mov esi, esp
		pop ebx
		pop edi
		pop esi
		pop ebp
		retn 10
	}
}

void Hook()
{
	HMODULE hNtdll = GetModuleHandle( "ntdll.dll" );
	if( hNtdll == NULL ) return ;
	g_hNtdll = hNtdll;
	
	DWORD dwOldProtect = 0;
	LPVOID lpTargetAdr = (LPVOID)( DWORD( hNtdll )+TARGET_OFFSET );
	VirtualProtect( lpTargetAdr, 8, PAGE_EXECUTE_READWRITE, &dwOldProtect );
	if( *((DWORD *)lpTargetAdr) == TARGET_CODE1 && 
		*((DWORD *)lpTargetAdr+1) == TARGET_CODE2 ) 
	{
		// *
		DWORD dwMCode = (DWORD)FilterFun-(DWORD)lpTargetAdr-5;
		*((BYTE *)lpTargetAdr) = JMP_CODE;
		*((DWORD *)((DWORD)lpTargetAdr+1)) = dwMCode;
	}
	
	VirtualProtect( (LPVOID)lpTargetAdr, 8, dwOldProtect, &dwOldProtect );
}

void UnHook()
{
	HMODULE hNtdll = GetModuleHandle( "ntdll.dll" );
	if( hNtdll == NULL ) return ;
	g_hNtdll = hNtdll;

	LPVOID lpTargetAdr = (LPVOID)( DWORD( hNtdll )+TARGET_OFFSET );
	DWORD dwOldProtect = 0;
	VirtualProtect( lpTargetAdr, 8, PAGE_EXECUTE_READWRITE, &dwOldProtect );
	*((DWORD *)lpTargetAdr) = TARGET_CODE1; 
	*((DWORD *)lpTargetAdr+1) = TARGET_CODE2;
	VirtualProtect( (LPVOID)lpTargetAdr, 8, dwOldProtect, &dwOldProtect );
}

void PatchProcess(HANDLE hProcess)
{
	/* -Patch- */
	Hook();
	LoadLibrary( "Tm.dll" );
	UnHook();	
}
2011-5-8 19:13
0
游客
登录 | 注册 方可回帖
返回
//