liuqiangni 发表于 2011-5-5 10:38:43

奇怪的验证

本帖最后由 liuqiangni 于 2011-5-5 10:43 编辑

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

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

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

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

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



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


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

Luckly 发表于 2011-5-5 11:25:45

是在测试什么哦???编程能力?

Hook LoadLibrary + offset

Luckly 发表于 2011-5-5 11:25:50

是在测试什么哦???编程能力?

Hook LoadLibrary + offset

liuqiangni 发表于 2011-5-5 14:01:49

回复 3# Luckly


    也不是测试编程能力啦, 就是我自己写了个DLL,让它来加载Tm.dll,然后补丁之,发现不行,总结错误是 我用LoadLibrary("Tm.dll"),这个执行后任然先执行的是验证,所以,我想问问版主能不能按我的方法给我一个正确的方向

liuqiangni 发表于 2011-5-5 23:31:46

回复 4# liuqiangni


    HookLoadLibrary我看不行,不过Hook,DLL 里面执行的函数到是可以看看

Luckly 发表于 2011-5-6 14:28:11

HOOK GetVersion就可以了


DWORD WINAPI myGetVersion(void)
{
   DWORD ver = sysGetVersion();
   HMODULE padr = GetModuleHandle("Tm.dll");
   if (*(WORD *)((BYTE *)(padr)+0x1082) == 0x1d75)
   {
           DWORD tp;
           VirtualProtect((LPVOID)((DWORD)(padr)+0x1082),2,PAGE_EXECUTE_READWRITE,&tp);
           *(WORD *)((BYTE *)(padr)+0x1082)=0x9090;
   }
   return ver;
}

Luckly 发表于 2011-5-6 14:29:25

因为是DLLMAIN里面的代码,所以选择HOOK API就要选择早一点的函数

liuqiangni 发表于 2011-5-7 01:33:51

因为是DLLMAIN里面的代码,所以选择HOOK API就要选择早一点的函数
Luckly 发表于 2011-5-6 14:29 https://www.chinapyg.com/images/common/back.gif


    呵呵,多谢版主,这个我现在弄懂了,通过这个东西,学了不少东西.Nisy 说你这方面很牛,要我找你,呵呵,没找错人,版主还是挺热心的嘛...以后希望多多指教我一下!嘻嘻!
页: [1]
查看完整版本: 奇怪的验证