加密狗软件破解复制T-GOU工作室
RSS
当前位置 : 加密狗破解 > 经典案例 >

破解加密狗案例之酷狗2去除flash广告补丁的详细步骤

来源:未知 作者:admin 时间:2011-07-22 18:01 浏览:

开始的时候试过好多方法~~ 包括看看它flash的联网怎么获取的~~ 还有什么
CreateWindow的时候让它返回失败,不让它创建出来这个窗口,可是都不行或找不到,或程序崩溃~

后来找来工具 spy++ 查看这个窗口
Spy++ 果然给力~~ 不过话说查找这个flash窗口还得弄好久~~不容易聚焦到它上面
不过还是可以成功的,找到的

看到了flash是个窗口类为 "Internet Explorer_Server" 的窗口,它的上层窗口 有 TfmAdBrowser , TfmSuite, TfrmMain
其中TfrmMain是最上层的主窗口类名,从名称中就可以看出,TfmAdBrowser---很显然是"广告(Ad)浏览(Browser)"类

于是 FindWinowEx 找到Internet Explorer_Server这个flash,调用 ShowWindow 隐藏之!,隐藏是成功了,
可是会出现个空洞,
更加不美观~~~

再看"TfmAdBrowser"是个好东西~~ 专管广告~ 哈,隐藏它试试--- 果然成功了! 广告就这样,没了!
不过广告没了就意味着~~右上方的那块地方成了没图的空地~~~ 虽然没广告 也不算完美 ~~
要不,我们自己在这里绘制个窗口吧~ 用我们喜欢的图片做背景 ~~ 哈哈

嗯~~ 那怎么在酷狗界面上创建窗口呢~~ ,一定得有个消息循环,在酷狗的进程空间内管理这个窗口~~~
好吧 来个dll,自己写个dll,里面写好创建窗口和消息循环的代码~~ ,然后patch kugoo.exe 让它加载我们的dll
就是这样了~~
这个dll就叫 KuGoo_Ads.dll 吧
关键代码如下:

更新:以前dll的代码用的是FindWindowEx,今天改为EnumChildWindows,更通用些,不依赖窗口排列次序~~ 2011/4/18

 

代码:
int WINAPI DllMain (HANDLE hInstance, DWORD dwReason, LPVOID  lpReserved)
{
  switch (dwReason)
  {
    case DLL_PROCESS_ATTACH:
      hDllInst = hInstance ;
      // 创建工作线程
      CreateThread(NULL, 0, ThreadFunc, NULL, 0, &dwThreadId) ;  
      return TRUE ;
    case DLL_PROCESS_DETACH:

      return TRUE ;
  }
  return TRUE ;
}


// Thread Function
DWORD WINAPI ThreadFunc(LPVOID lParam)
{

    DWORD  dwTimeBegin, dwTimeCurrent, len ;
    HBITMAP hBitmap ;
    char  szExeName[MAX_PATH] , *p ;
    RECT  rcParentWnd ;

    GetModuleFileName(NULL, szExeName, sizeof(szExeName)) ;
    len = strlen(szExeName) ;

    p = &szExeName[len-1] ;
    while(*p != '\\' && p != szExeName) p-- ;
    // 判断是否是KuGoo.exe加载的
    if(lstrcmpi(p+1, szKeyName) != 0)
    {
      FreeLibrary(hDllInst) ;
      return 0 ;
    }
    dwTimeBegin = GetTickCount() ;
    FindAdWindow() ;
    while(!hAdParent || !hAdWnd)
    {
        dwTimeCurrent = GetTickCount() ;
        if(dwTimeCurrent - dwTimeBegin > 60*1000)
          return 0 ;    // 超时就返回
        Sleep(500) ;    // 延时
        FindAdWindow() ;
    }

    
    hBitmap = LoadBitmap(hDllInst, (LPSTR)IDB_BITMAP) ;
    GetClientRect(hAdWnd, &rcParentWnd) ;
      CreateNewWindow(hAdParent, hBitmap, 0, 0, rcParentWnd.right, rcParentWnd.bottom) ;
    return 1 ;
}


// EnumChildProc可以遍历所有子孙窗口
BOOL CALLBACK EnumChildProc(HWND hWnd,  LPARAM lParam)
{
  char szClassName[MAX_PATH] = {0} ;

  GetClassName(hWnd, szClassName, MAX_PATH) ;
  if(!lstrcmpi(szClassName, "TfmAdBrowser"))
    {
      hAdWnd = hWnd ;
      hAdParent = GetParent(hAdWnd) ;
      ShowWindow(hAdWnd, SW_HIDE) ;
    }
  return TRUE ;
}


// EnumChildWindows
BOOL FindAdWindow()
{
  HWND hWndMain ;
  
  hWndMain = FindWindow("TfrmMain", NULL) ;  
  if(!hWndMain) return 0 ;
  EnumChildWindows(hWndMain, EnumChildProc, 0) ;
  return 1 ;
}


// 创建自定义窗口
BOOL CreateNewWindow(HWND hParent,HBITMAP hBitmap, int x, int y, int cx, int cy)
{
  MSG      msg ;
  HWND    hWnd ;
  WNDCLASS  wcWndClass ;

  memset(&wcWndClass, 0, sizeof(WNDCLASS)) ; 
  wcWndClass.style = 8 ;
  wcWndClass.lpfnWndProc = WndProc ;
  wcWndClass.hInstance = hDllInst ;
  wcWndClass.hbrBackground = (HBRUSH) CreatePatternBrush(hBitmap) ;
  wcWndClass.lpszClassName = szClassName ;
  RegisterClass(&wcWndClass) ;
  hWnd = CreateWindowEx (WS_EX_CONTROLPARENT, szClassName, NULL, WS_CHILD | WS_CLIPSIBLINGS | WS_CLIPCHILDREN, 
                       x, y, cx, cy, hParent, NULL, hDllInst, NULL) ;
  ShowWindow(hWnd, SW_NORMAL) ;
  UpdateWindow(hWnd) ;
  
  while(GetMessage(&msg, NULL, 0, 0))
  {
    TranslateMessage(&msg) ;
    DispatchMessage(&msg) ;
  }
  return 0 ;
}


// 新建窗口的窗口过程
LRESULT CALLBACK WndProc(HWND hWnd,  UINT uMsg, WPARAM wParam, LPARAM lParam)
{

  switch(uMsg)
  {

    case WM_CLOSE:
      DestroyWindow(hWnd);
      PostQuitMessage(0);
      return 0;
    default:
      return DefWindowProc(hWnd, uMsg, wParam, lParam);
  }
}


当然这些做完后还要写个外壳就是补丁主程序,来实现修改KuGoo.exe让它加载我们的这个dll,
PEID 查看的值它恰好有导入函数 LoadLibraryA 哈哈~~ 很好

OD载入,LoadLibraryA 下断,断下后就知道了 IAT 表中LoadLibraryA 存储在哪里了~~
直接记录~~
我这里得到的是这样的:

004773E5 . 68 10754700 push KuGoo.00477510 ; /FileName = "imm32.dll"
004773EA . E8 ED12F9FF call <jmp.&kernel32.LoadLibraryA> ; \LoadLibraryA
004773EF . A3 CCAC7900 mov dword ptr ds:[79ACCC],eax ; IMM32.771F0000

此处call是下面这个:
call 004086DC // LoadLibraryA 的地址的存储单元的地址

那么我们在KuGoo.exe中应该这样做了:
1)修改入口点代码为 jmp XXXXX (XXXXX 是我们的代码,这部分代码我把它安排在了 DOS 块中)
2)XXXXX处代码:
mov eax,0x004086DC // LoadLibraryA的地址为[004086DC]
push YYYYY // YYYYY是我们的dll名字字符串的地址
call eax // Load
--------
-------- // 执行刚才入口点由于被修改为jmp而毁坏的指令
jmp ZZZZZ // 调回继续执行原程序

以上这些是我们要WriteFile到KuGoo.exe的.
把外壳写好我们的这个补丁程序也就大功告成了
其他信息:行业管理软件加密狗破解复制解密
行业管理软件加密狗破解,行业管理软件加密狗复制,破解加密狗行业管理软件,行业管理软件加密狗解密,行业管理软件加密锁复制,行业管理软件加密锁解密,行业管理软件加密锁破解.

行业管理软件加密狗破解?行业管理软件加密狗复制?行业管理软件加密狗破解公司?当然是深圳朝阳科技旗下T-GOU加密狗破解团队!T-gou加密狗复制加密狗破解团队拥有多年破解加密狗的经验,精湛的破解技术,为广东珠三角地区提供了多年的破解复制服务,是您的不二选择。T-GOU是完全可以进行行业管理软件加密狗破解的。信誉保证,安全保障,质量保障。


Tags:
最新评论共有 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名评论
立即注册账号