Originally Posted by
lucasambuca
In OllyDbg I get this information for the ChannelInfo.
01386669 |. 68 CC4BAC01 PUSH WoW.01AC4BCC ; /Arg2 = 01AC4BCC ASCII "Usage: UnitChannelInfo("unit")"
0138666E |. 56 PUSH ESI ; |Arg1
0138666F |. E8 7C315D00 CALL WoW.019597F0 ; \WoW.019597F0
01386674 |. 83C4 08 ADD ESP,8
01386677 |. 33C0 XOR EAX,EAX
01386679 |. 5E POP ESI
0138667A |. 8BE5 MOV ESP,EBP
0138667C |. 5D POP EBP
0138667D |. C3 RETN
0138667E |> 53 PUSH EBX
0138667F |. 57 PUSH EDI
01386680 |. 6A 00 PUSH 0
01386682 |. 6A 01 PUSH 1
01386684 |. 56 PUSH ESI
How do you get the right offsets out of this? (It should be 0xA48 )
IDA and HexRays Plugin should help you to find stuff 100 000 times faster 
This is ChannelInfo in IDA:
Code:
signed int __cdecl Script_UnitChannelInfo(int a1)
{
signed int result; // eax@2
int v2; // ST28_4@2
int v3; // ebx@3
char *v4; // eax@3
int v5; // eax@4
int v6; // ecx@4
int v7; // edi@6
int v8; // eax@8
const char *v9; // eax@8
int v10; // eax@12
unsigned __int8 v11; // ST42_1@16
int v12; // [sp+18h] [bp-14h]@8
char *v13; // [sp+1Ch] [bp-10h]@12
int v14; // [sp+20h] [bp-Ch]@10
int v15; // [sp+24h] [bp-8h]@8
char v16; // [sp+2Bh] [bp-1h]@14
if ( lua_isstring(a1, 1) )
{
v4 = (char *)lua_tolstring(a1, 1, 0);
v3 = GetUnitFromName(v4);
if ( v3
&& (v5 = FrameTime__GetCurTimeMs(), v6 = *(_DWORD *)(v3 + 2632), v6 >= g_SpellDB.minIndex)
&& v6 <= g_SpellDB.maxIndex
&& (v7 = *((_DWORD *)g_SpellDB.Rows + v6 - g_SpellDB.minIndex)) != 0
&& v5 - *(_DWORD *)(v3 + 2640) < 0 )
{
v15 = *(_DWORD *)(v7 + 84);
v12 = *(_DWORD *)(v7 + 88);
v9 = (const char *)lua_tolstring(a1, 1, 0);
v8 = strcasecmp(v9, "player");
if ( v8 || *(_DWORD *)(v7 + 8) & 0x20000000 )
v14 = v15;
else
v14 = FrameScript_GetText("CHANNELING", -1, v8);
v13 = &byte_B89E17;
v10 = ClientDB__GetRow(*(_DWORD *)(v7 + 76));
if ( v10 )
v13 = *(char **)(v10 + 4);
v16 = 0;
if ( *(_BYTE *)(v7 + 4) & 0x20 )
v16 = 1;
v11 = CGUnit_C__sub_5B26E0(v3);
lua_pushstring(a1, v15);
lua_pushstring(a1, v12);
lua_pushstring(a1, v14);
lua_pushstring(a1, v13);
lua_pushnumber(a1, (double)*(unsigned int *)(v3 + 2636));
lua_pushnumber(a1, (double)*(unsigned int *)(v3 + 2640));
FrameScript__pushboolean(a1, (unsigned __int8)v16);
FrameScript__pushboolean(a1, v11);
result = 8;
}
else
{
result = 0;
}
}
else
{
luaL_error(a1, "Usage: UnitChannelInfo(\"unit\")", v2);
result = 0;
}
return result;
}