网络骑士 发表于 2012-6-8 21:08

【原创开源】破文生成器中,汇编代码高亮处理的代码

本帖最后由 网络骑士 于 2012-6-8 21:12 编辑

因为最近有个印度佬问我相关的问题,打算把代码给他参考参考,但是便宜阿三不如先便宜自己人啊。

而且考虑到可能大家以后在写编辑器之类的程序时会用到相关的技术, 所以决定先在这里公开这部分的源代码。

其实也没啥特别的,只是收集汇编指令中要用到的符号和指令等关键字倒是很花时间。

以下是我整理的分类,其他汇编语法相关的项目中也可以借用的。

const
// 符号...
Symbols: array of String = ('#', ', '(', ')', '*', ',', '.', '/',
    ':', ';', '[', ']', '{', '}', '<', '>', '-', '=', '+', '''', '@','|','\','^');
//寄存器
Registers: array of String = ('flat','stdcall','casemap',
'none','dup','proto','local','invoke',
'eax','ax','ah','al','ebx','bh','bl','bx',
'ecx','cx','ch','cl','edx','dx','dh','dl',
'esi','si','edi','di','ebp','bp','esp',
'sp','carry','overflow','parity','sign','zero',
'true','false');
//操作符
ReservedWords: array of string = ('db','dw','dd','dq','mov','movsx','movzx',
    'xchg','push','pusha','pop','popa','in','out','xlat',
    'lea','lds','les','lfs','lgs','lss','lahf','sahf','pushf','pushfd',
    'popf','popfd','add','sub','adc','sbb','inc','dec','mul','div','imul',
    'idiv','cbw','cwd','cwde','cdq','neg','daa','das','aaa','aas','aam',
    'aad','and','or','xor','not','shl','sal','rol','ror','rcl','rcr',
    'shld','shrd','movs','movsb','movsw','movsd','cmps','cmpsb','cmpsw','cmpsd',
    'scas','scasb','scasw','scasd','lods','lodsb','lodsw','lodsd','stos','stosb',
    'stosw','stosd','ins','insb','insw','insd','outs','outsb','outsw','outsd',
    'ret','retn','retf','int','into','iret','iretd','set','clc','stc','cmc','cld',
    'std','cli','sti','hlt','wait','esc','lock','nop','bt','btc','btr','bts','bsf',
    'bsr','bound','enter','leave','lar','lsl','lgdt','lidt','sgdt','sidt','ltr',
    'str','lmsw','smsw','lldt','sldt','arpl','clts','verr','verw');
//破解中常用的要高亮
HighLight: array of String = (
    'jmp','jc','jnc','jz','je','jnz','jne','js','jns','jo','jno','jp','jpe','jnp',
    'jpo','ja','jneb','jae','jnb','jb','jnae','jbe','jna','jg','jnle','jge','jnl',
    'jl','jnge','jle','jng','jcxz','jecxz','loop','loopz','loope','loopnz','loopne',
    'pushad','popad','cmp','test','call');
//masm的段关键字
Statements : array of String = (
    '386','model','option','data','const','stack','code',
    'proc','endp','struc','ends','end','include','includelib','if','else','elseif',
    'endif','while','endw','repeat','break','continue','until','null');
//其他描述符
Description : array of String = (
    'ds','cs','es','ss','fs','gs','addr','offset','byte','word','dword','ptr');

目前已知bug是:最后一行的注释符,如果没有连换行一起选择的话,不会被当作注释着色。
欢迎跟帖讨论解决办法。   
具体的高亮代码在附件中,文件头部的注释有详细的说明。   

觉得有用的童鞋给个回复吧,不然就没基情发代码了。


小明无敌 发表于 2012-6-8 21:11

啊我正要写1个出来呢。。。
你太打击我了         

网络骑士 发表于 2012-6-8 21:14

小明大大,没必要人人都去造轮子啦。
一起看看怎么解决那个最后一行注释的问题吧……

小明无敌 发表于 2012-6-8 21:33

网络骑士 发表于 2012-6-8 21:14 static/image/common/back.gif
小明大大,没必要人人都去造轮子啦。
一起看看怎么解决那个最后一行注释的问题吧……

语言不通哦。。。帮不了你

网络骑士 发表于 2012-6-8 21:34

你用的啥语言,我翻译过去……

淡然出尘 发表于 2012-6-8 21:49

犀利{:1_932:} 膜拜 、

小明无敌 发表于 2012-6-8 21:56

网络骑士 发表于 2012-6-8 21:34 static/image/common/back.gif
你用的啥语言,我翻译过去……

E            

网络骑士 发表于 2012-6-9 03:14

http://www.52pojie.cn/forum.php?mod=viewthread&tid=152170&extra=
翻好了,易的库貌似很好还原的说

pk196371 发表于 2012-7-22 19:55

这个不错....方面以后高亮处理代码~~

daydream 发表于 2012-7-26 16:36

本帖最后由 daydream 于 2012-7-26 17:09 编辑

多谢楼主的努力,{:1_921:}

{:17_1074:}

不过注释后面的关键字也被着色
页: [1]
查看完整版本: 【原创开源】破文生成器中,汇编代码高亮处理的代码