能力值:
( LV2,RANK:10 )
|
-
-
2 楼
mov c,eax pop eax 去掉 调用函数取返回值
|
能力值:
(RANK:15 )
|
-
-
3 楼
你怎么把四个字节的值存到一个字节的char里呢
|
能力值:
(RANK:10 )
|
-
-
4 楼
QQ1214554466
|
能力值:
( LV5,RANK:60 )
|
-
-
5 楼
你得把c定义足够大 ... mov ecx, json_msg_Len mov esi,[arg1] lea edi ,c...
最后于 2020-3-1 12:51
被AperOdry编辑
,原因:
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
char * pChar; _asm{ mov dword ptr ds:[pChar],Someaddr } size_t s = strlen(pChar); char * ret = new char[s]; memcpy_s(ret,s,pChar,s); 或者直接用detours hook
最后于 2020-3-1 14:16
被d3ysi编辑
,原因:
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
char* 不能解决问题吗
|
能力值:
( LV1,RANK:0 )
|
-
-
8 楼
感谢分享
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
push 是eax, pop是ecx 有问题 c 定义有问题 实际使用 函数定义最好申明成 naked 如下方式, 测试正常
int Test1(CHAR *pText) { OutputDebugStringA(pText); return 1; }
CHAR *p;
__declspec(naked) VOID TestH() { _asm { push eax; mov eax,[esp+8]; mov p,eax; pop eax; jmp Test1; } }
测试代码: int (*fun1)(CHAR *pText) = &Test1; fun1("asdf"); int (*fun2)(CHAR *pText) = (int (*)(CHAR *pText))&TestH; fun2("zxcv");
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
char* tmpc; __asm mov eax, [esp + 8]; __asm mov tmpc, eax; strcpy(c, tmpc);
|
能力值:
( LV4,RANK:50 )
|
-
-
11 楼
你自己也说了第一个参数是const char *,那么你的c应声明为char*,这也是3楼所述存在的问题。当然这样保存的是该字符串的指针。如果需要复制字符串,那么你应该将c声明为char类型数组,参考5楼、10楼的方式使用指令将字符依次拷贝到c中。
最后于 2020-3-20 17:10
被Ratin编辑
,原因:
|
|
|