能力值:
( LV2,RANK:10 )
2 楼
关注一个
能力值:
( LV13,RANK:460 )
3 楼
关注:)上班后试试
能力值:
( LV15,RANK:670 )
4 楼
继续关注。。。
#include 目录可以设置就好了,已经装有开发环境了。还要再把文件多拷贝一份么。。
编译后的 C 代码是经过优化的吗??
能力值:
( LV15,RANK:670 )
5 楼
这个插件可以玩。
可以这样写:
#define NULL 0
#define HDC unsigned long
void test()
{
HDC hdc = GetDC(NULL);
}
在OD的反汇编窗口里生成:
00A9E7E0 > 55 push ebp
00A9E7E1 89E5 mov ebp,esp
00A9E7E3 81EC 04000000 sub esp,4
00A9E7E9 90 nop
00A9E7EA B8 00000000 mov eax,0
00A9E7EF 50 push eax
00A9E7F0 E8 4F800000 call <&user32.GetDC>
00A9E7F5 83C4 04 add esp,4
00A9E7F8 8985 FCFFFFFF mov dword ptr ss:[ebp-4],eax
00A9E7FE C9 leave
00A9E7FF C3 retn
点 GetSize 按钮之后,希望还能显示 EndAddr: 这样才比较好判断空间是否足够。
现在我明白头文件的作用了,就是可以定义类型。
不支持直接引用 WinDef.h ,看来类型定义要自己写了。
附加一个处理过的 Windef.h
上传的附件:
能力值:
( LV15,RANK:670 )
6 楼
编译生成的代码还可以再优化:
#include <windef.h>
DWORD GetSize(int x, int y, int x2, int y2)
{
return x+y+x2+y2;
}
00A9E7E0 > 55 push ebp
00A9E7E1 89E5 mov ebp,esp
00A9E7E3 81EC 00000000 sub esp,0
00A9E7E9 90 nop
00A9E7EA 8B45 08 mov eax,dword ptr ss:[ebp+8]
00A9E7ED 8B4D 0C mov ecx,dword ptr ss:[ebp+C]
00A9E7F0 01C8 add eax,ecx
00A9E7F2 8B4D 10 mov ecx,dword ptr ss:[ebp+10]
00A9E7F5 01C8 add eax,ecx
00A9E7F7 8B4D 14 mov ecx,dword ptr ss:[ebp+14]
00A9E7FA 01C8 add eax,ecx
00A9E7FC E9 00000000 jmp far.00A9E801
00A9E801 C9 leave
00A9E802 C3 retn
能力值:
( LV9,RANK:170 )
7 楼
什么时候兴趣转到TINY C C了,这个优点,主用于什么场合?
能力值:
( LV15,RANK:670 )
8 楼
下面这个函数编译不通过。
int StringToInt(char *pHex)
{
int i, sum, t, index;
index = 0;
sum = 0;
for (i = 0; pHex[i] != 0 && index < 8; i++)
{
if (pHex[i] >= '0' && pHex[i] <= '9')
{
t = pHex[i] - '0';
sum *= 0x10;
sum += t;
}
if (pHex[i] >= 'a' && pHex[i] <= 'f')
{
t = pHex[i] - 'a' + 10;
sum *= 0x10;
sum += t;
}
if (pHex[i] >= 'A' && pHex[i] <= 'F')
{
t = pHex[i] - 'a' + 10;
sum *= 0x10;
sum += t;
}
if (0 == sum)
index = 0;
else
index += 1;
}
return sum;
}
能力值:
( LV15,RANK:670 )
9 楼
FunName 是干什么用的??
右边的函数列表,要是能直接复制函数名称就好了。
还有用 edit 写代码,真的很难写,能不能换另一个控件。
编译生成的代码还是冗余。
能力值:
( LV15,RANK:670 )
10 楼
界面改成这样感觉比较好。
上传的附件:
能力值:
( LV4,RANK:50 )
11 楼
FunName是填入一个你自己定义的函数名,编译后会给出函数起始地址
俺孤陋寡闻不知道有啥好的控件,麻烦推荐个
冗余问题俺也木办法毕竟水平有限Tiny C Compiler也是别人写的
另外俺感觉你的字符串转数字函数木有俺的简短晔
纯属个人看法
DWORD StrToHex(const char * str)
{
DWORD n = 0;
char szNB[9] = {0};
int iLen = strlen(str);
if(str && iLen >= 1 && iLen <= 8 )
{
if (iLen < 8)
{
for (int i = 8-iLen; i; i--)
{
strcat(szNB,"0");
}
strcat(szNB,str);
}
else
{
strcpy(szNB,str);
}
for (int y = 28 , i = 0; y>=0; y -= 4 ,i++)
{
switch (szNB[i])
{
case '0':case '1':case '2': case '3':case '4':case '5':case '6':case '7':case '8':case '9':
n |= (szNB[i] - '0')<< y;
break;
case 'A':case 'B':case 'C':case 'D':case 'E':case 'F':
n |= (szNB[i] - '7')<< y;
break;
case 'a':case 'b':case 'c':case 'd':case 'e':case 'f':
n |= (szNB[i] - 'W')<< y;
break;
}
}
}
else
{//这里应该用来处理除了0x开头的16进制字符串的情况。
__asm int 3;
}
return n;
}
cntrump兄如果有意的话,我把源码给你怎么样,表嫌我的代码烂就成
能力值:
( LV15,RANK:670 )
12 楼
推荐使用 Scintilla 作为编辑控件。
能力值:
( LV2,RANK:10 )
13 楼
收下还开源支持
能力值:
( LV15,RANK:670 )
14 楼
显示模块名称和函数名称的时候,按名称顺序排序,找起来方便。
替换了编辑控件。
https://github.com/cntrump/C_Patch_OD_Plugin
上传的附件:
能力值:
( LV4,RANK:50 )
15 楼
多谢大家的热心,人多力量的嘛
不过貌似木有语法高亮哦
我来给补上个RAEdit.dll版带语法高亮的,不过木有右键菜单
C_Patch.rar
上传的附件:
能力值:
( LV8,RANK:120 )
16 楼
好物....
能力值:
( LV15,RANK:670 )
17 楼
[QUOTE=b23526;1001676]多谢大家的热心,人多力量的嘛
不过貌似木有语法高亮哦
我来给补上个RAEdit.dll版带语法高亮的,不过木有右键菜单
C_Patch.rar[/QUOTE]
语法高亮也可以做。。。
能力值:
( LV2,RANK:10 )
18 楼
求tcc教程啊~
能力值:
( LV7,RANK:100 )
19 楼
if (pHex[i] >= 'A' && pHex[i] <= 'F')
{
t = pHex[i] - 'a ' + 10;
sum *= 0x10;
sum += t;
}
能力值:
( LV15,RANK:670 )
20 楼
[QUOTE=goodlucky;1012616]if (pHex[i] >= 'A' && pHex[i] <= 'F')
{
t = pHex[i] - 'a' + 10;
sum *= 0x10;
sum += t;
}...[/QUOTE]