小编Str*_*tus的帖子

如何为钩子创建一个trampoline函数

我有兴趣挂钩,我决定看看我是否可以挂钩一些功能.我对使用类似弯路的图书馆不感兴趣,因为我想拥有自己做的经验.通过我在互联网上找到的一些资料,我能够在下面创建代码.这是基本的,但它可以正常工作.但是当挂钩由多个线程调用的函数时,它被证明是非常不稳定的.如果几乎同时进行两次通话,它就会崩溃.经过一些研究,我认为我需要创建一个蹦床功能.在寻找了几个小时后,我无法找到任何其他关于蹦床的概述.我找不到任何具体的关于编写蹦床功能,或者它们是如何工作的.如果任何人可以帮我写一个,发布一些消息来源,或者至少通过推荐一些文章,网站,书籍等指向我正确的方向.我将非常感激.

以下是我写的代码.这是非常基本的,但我希望其他人可以从中吸取教训.

TEST.CPP

#include "stdafx.h"

Hook hook;

typedef int (WINAPI *tMessageBox)(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType);

DWORD hMessageBox(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType)
{
    hook.removeHook();
    tMessageBox oMessageBox = (tMessageBox)hook.funcPtr; 
    int ret =oMessageBox(hWnd, lpText, "Hooked!", uType);
    hook.applyHook(&hMessageBox);

    return ret;
}

void hookMessageBox()
{
    printf("Hooking MessageBox...\n");
    if(hook.findFunc("User32.dll", "MessageBoxA")) 
    {
        if(hook.applyHook(&hMessageBox))
        {
            printf("hook applied! \n\n");
        } else printf("hook could not be applied\n");
    }   
}
Run Code Online (Sandbox Code Playgroud)

hook.cpp

#include "stdafx.h"

bool Hook::findFunc(char* libName, char* funcName) 
{
    Hook::funcPtr = (void*)GetProcAddress(GetModuleHandleA(libName), funcName); 
    return (Hook::funcPtr …
Run Code Online (Sandbox Code Playgroud)

c++ hook winapi tramp trampolines

12
推荐指数
1
解决办法
9779
查看次数

构建apk时出错 - "多个dex文件定义Lcom/google/ads/Ad"

我一直在把头发撕成一片,过去3个小时我一直试图解决它,但一直无法解决.我已经创建了一个Android应用程序,我准备把它放在Android市场上,但我在尝试导出到apk时遇到此错误.

无法执行dex:多个dex文件定义Lcom/google/ads/Ad;

我已经阅读了很多关于这个问题并尝试了很多解决方案,但似乎没有任何帮助.我已经清理并重建了,我删除了bin文件夹,我确保bin文件夹被排除在构建路径之外.什么都没有用.如果有人能帮助我,我会非常感激.

java eclipse android dex

6
推荐指数
2
解决办法
8200
查看次数

Android项目无法在eclipse中引用其他项目

有一个名为TestAndroid的android项目.我能够在我的Android设备上运行它没问题.但是我希望能够使用其他项目的代码.所以我转到我的构建路径并添加项目Test.Test是一个使用java6的标准java项目.Test项目有一个Test类,它只是一个空类.

虽然这里有些混乱但是当我在TestAndroid中创建一个Test实例时,我遇到了运行时错误.这是我从logcat得到的错误.

05-27 21:47:49.976: E/dalvikvm(27493): Could not find class 'com.tests.eclipseisbroken.Test', referenced from method com.tests.eclipseisbroken.TestAndrodiActivity.onCreate
05-27 21:47:49.986: W/dalvikvm(27493): VFY: unable to resolve new-instance 11 (Lcom/tests/eclipseisbroken/Test;) in Lcom/tests/eclipseisbroken/TestAndrodiActivity;
05-27 21:47:49.986: D/dalvikvm(27493): VFY: replacing opcode 0x22 at 0x0008
05-27 21:47:49.986: D/dalvikvm(27493): VFY: dead code 0x000a-000d in Lcom/tests/eclipseisbroken/TestAndrodiActivity;.onCreate (Landroid/os/Bundle;)V
05-27 21:47:50.026: D/AndroidRuntime(27493): Shutting down VM
05-27 21:47:50.046: W/dalvikvm(27493): threadid=1: thread exiting with uncaught exception (group=0x40028a00)
05-27 21:47:50.056: E/AndroidRuntime(27493): FATAL EXCEPTION: main
05-27 21:47:50.056: E/AndroidRuntime(27493): java.lang.NoClassDefFoundError: com.tests.eclipseisbroken.Test
05-27 21:47:50.056: E/AndroidRuntime(27493):    at com.tests.eclipseisbroken.TestAndrodiActivity.onCreate(TestAndrodiActivity.java:16)
05-27 21:47:50.056: E/AndroidRuntime(27493): …
Run Code Online (Sandbox Code Playgroud)

java eclipse android

6
推荐指数
1
解决办法
3092
查看次数

标签 统计

android ×2

eclipse ×2

java ×2

c++ ×1

dex ×1

hook ×1

tramp ×1

trampolines ×1

winapi ×1