同学翻译的FlexLm文章
“大粟句”通过精心收集,向本站投稿了8篇同学翻译的FlexLm文章,以下是小编整理后的同学翻译的FlexLm文章,欢迎阅读分享。
篇1:同学翻译的FlexLm文章
标 题:同学翻译的一篇FlexLm文章 (9千字)
发信人:allenzhu
时 间:-3-31 9:55:20
详细信息:
UGFLEX――传奇在继续
作者:macilaci 翻译:上官振宁
需要的工具
Debugger (SICE OllyDbg--非常棒的东东),Wadsm或者IDA,Flexlm SDK 7.2或者更高版本(非必须),一些最近的信息(从Pilgrim Nolan Blender或其他的地方得到),
目标位置(对付得东东是个CAD软件,叫做Solidedge。)
www.ugsolutions.com
www.solid-edge.com
正文
经过最初的嗅听之后,发现了读取license文件(selicense.dat)的DLL。也许我们并没有创建License文件,所以License Key也没有,它是这样的:
FEATURE SOLIDEDGECLASSIC sedemon 11.0 permanent uncounted
123456789ABC HOSTID=ANY ISSUER=“I don't know”
我们的ugflex.dll被jutil.dll替换。还有个MAP文件,格式如下:
Address Publics by Value Rva+Base Lib:Object
0001:00000010 _JSetVACallback@4 5a001010 f auto.obj
0001:00000040 ?IsAutomationEnabled@@YAHXZ 5a001040 f auto.obj
0001:00000050 ?IsLicenceValidForAutomation@@YAHXZ 5a001050 auto.obj
为了与idasym.exe文件一起使用这个MAP文件,将Rva+Base还有Lib:Object列删除。然
后将创建的sym文件与symbol loader一起使用(设断点易如反掌,接着往下看就明白了)
由经验得知,实际上对于License的检查是在LC_CHECKOUT进行的(摘自flexlm手册)
lc_checkout
SYNTAX status = lc_checkout( job feature version num_lic flag code dup_group )
说明:查出一个或多个具体的feature(不好翻译,姑且用e文)。如果调用lc_checkout()的程序存在,那么check出的license将返回供另一用户使用。
如果将上面函数中的flag设置成LM_CO_WAIT,那么这个程序将等待,一直到达到这个feature需要的license数目。License文件的版本必须等于或高于lc_checkout调用中的version参数。
If the license file is counted that is if the number of users specified on the FEATURE line is non-zero lc_checkout() will request the license from alicense server. If the number of users on the FEATURE line is uncounted it will grant permission based on the contents of the license file onlyŠhostidversion expiration date etc.(感觉没什么用,没翻译)
在5a04cf70 处的_lc_checkout是设断点的好地方!找到了FEATURE名后,就可以按照上面的格式建立自己的license文件了^_^。为了保证正确性,给出所有的FEATURE名:SOLIDEDGECLASSIC SOLIDEDGEADVANCEDPAR SOLIDEDGEXPRESROUTE SOLIDEDGEFEATURERECO SOLIDEDGEXPAND3D
SEWEBPUBLISHER SOLIDEDGEHANDBOOK SOLIDEDGEMANAGER(note:有些feature如expand3d要在别的可执行程序中采用的到,以后再说^_^)
再来看l_good_lic_key函数。_lc_checkout命中三次而_l_good_lic_key只有一次。挺败吧?下面是程序片断:
5A04DA6C loc_5A04DA6C: ;CODE XREF _lm_start_real+343j
5A04DA6C mov edx [ebp+arg_14]
5A04DA6F push edx ; vendorcode 结构(这次有所改进-加密了)
5A04DA70 mov eax [ebp+var_20]
5A04DA73 push eax
5A04DA74 mov ecx [ebp+arg_0] ;我们的license information
5A04DA77 push ecx
5A04DA78 call _l_good_lic_key ;检查license
5A04DA7D add esp 0Ch
5A04DA80 test eax eax
5A04DA82 jnz short loc_5A04DA89 ;这个你应该很熟悉了吧:-)
如果运行part.exe而没有反应,可能是应为你没有运行seiges.exe。part.exe中有些反debug的代码的部分。运行seiges.exe并将eax置成非零,将得到status=OK.但是仅仅有patch并不能让人满意,所以我们接着往下看^_^
5A04E995 add edx 54h
.
.
5A04E99C push eax
5A04E99D call _l_extract_date
.
.
5A04E9B1 push ecx ;我们的vendorcode structure
5A04E9B2 mov edx [ebp+var_CC]
5A04E9B8 push edx ;feature(特征名)
5A04E9B9 mov eax [ebp+arg_4]
5A04E9BC push eax
5A04E9BD mov ecx [ebp+arg_0]
5A04E9C0 push ecx
5A04E9C1 call _l_ckout_crypt
跟踪上面的代码我们发现_l_ckout_crypt做了一些重要的工作。这里只改变了seed的值而没有改变key的值。由于key的值没有改变,我们姑且认为他们已经被解密了,但seed的值仍然隐藏着!继续追踪,_real_crypt出现了(败了,这么个败名字)
5A050B44 mov eax [ebp+arg_0]
5A050B47 push eax
5A050B48 call _real_crypt
5A050B4D add esp 10h
下面是_real_crypt的代码片断:
.
.
5A050ECB push ecx
5A050ECC call _l_getattr ;取得license attributes
.
.
5A05106A push eax
5A05106B call _l_good_bin_date ; date
.
.
5A0510DA mov edx [ebp+arg_0]
5A0510DD push edx
5A0510DE call _move_in_hostid ; 从license文件里获取hostid
.
.
5A051456 push offset aDup_group ; “DUP_GROUP” ;DUP_GROUP=UHD意味着可能的分组为(DUP_USER|DUP_HOST|DUP_DISPLAY)
所以对于用户在一台主机上,另外的对于feature的使用不会销毁另外的licenses. (看不太懂哦:( )
5A05145B mov eax [ebp+arg_4]
5A05145E mov ecx [eax+94h]
5A051464 push ecx
5A051465 call _addi ;把这个加到license中
.
.
5A051855 push ecx
5A051856 call _l_ckout_string_key ;这个怎样?
5A05185B add esp 18h
_l_ckout_string_key值得注意!
5A052902 _l_ckout_string_key proc near ; CODE XREF: _real_crypt+AD1p
5A052902 push ebp
5A052903 mov ebp esp
5A052905 sub esp 1E4h
.
.
.
5A053755 call _our_encrypt2 5A05375A add esp 4
5A05375D jmp short loc_5A05376C
5A05375F ; ΖΖΖΖΖΖΖΖΖΖΖΖΖΖΖΖΖΖΖΖΖΖΖΖΖΖΖΖΖΖΖΖΖΖΖΖΖ
5A05375F
5A05375F loc_5A05375F: ; CODE XREF: _l_ckout_string_key+E43j
5A05375F ; _l_ckout_string_key+E4Cj
5A05375F push offset byte_5A0C5820
5A053764 call _our_encrypt ;the second encrypt
.
.
.
5A05384B mov ecx [ebp+var_188]
5A053851 add ecx 1
5A053854 mov [ebp+var_188] ecx
5A05385A
5A05385A loc_5A05385A: ; CODE XREF: _l_ckout_string_key+F47j
5A05385A mov edx [ebp+var_188]
5A053860 cmp edx [ebp+var_18C]
5A053866 jge loc_5A0539E0
5A05386C mov eax [ebp+var_188]
5A053872 mov cl [ebp+eax*2+var_168]
5A053879 mov [ebp+var_1CC] cl
5A05387F call ds:__p___mb_cur_max
5A053885 cmp dword ptr [eax] 1
.
.
.
5A0539CB xor eax eax
5A0539CD mov al byte_5A0C5820[edx] ; 最终 - 比较license
5A0539D3 cmp ecx eax
5A0539D5 jz short loc_5A0539DB ;比较下一个byte
5A0539D7 xor eax eax ;错误的key
5A0539D9 jmp short loc_5A053A01
5A0539DB ; ΖΖΖΖΖΖΖΖΖΖΖΖΖΖΖΖΖΖΖΖΖΖΖΖΖΖΖΖΖΖΖΖΖΖΖΖΖ
5A0539DB
5A0539DB loc_5A0539DB: ; CODE XREF: _l_ckout_string_key+10D3j
5A0539DB jmp loc_5A05384B ;loop back
上面的循环与版本7中的有些类似(现在是7.2),
5A0C5820是产生真正的key的地方!这里有必要说明一下key的产生:如果没有license key,我们的license(格式正确)是混乱的,两者好像是通过addi function函数联系到一起的。所以现在程序的任务就是计算vendorseed并在4个vendorkey的帮助下同混乱的license混合(可能是做某种运算^_^)。上面说得工作将在5A0C5820处完成。在5A0C5820处bpm,我们得到:
.
.
5A053334 mov byte_5A0C5820[ecx] al ;here we go
5A05333A jmp short loc_5A0532F9
5A05333C loc_5A05333C: ; CODE XREF: _l_ckout_string_key+A0Dj
5A05333C cmp [ebp+var_188] 0
从5A05333C处开始追踪,我们发现了计算seed的代码:
5A0533EA xor eax ebx ;计算正确的seed
5A0533EC push eax ;入栈
5A0533ED call sub_5A053AD3
5A0533F2 add esp 4
5A0533F5 mov [ebp+seed_one] eax
5A0533FB mov edx [ebp+seed_one]
5A053401 and edx 0FFh
.
.
5A0534C9 add eax 1
5A0534CC mov [ebp+var_10] eax
5A0534CF mov [ebp+seed_one] 3D4DA1D6h ;隐藏seed
.
.
5A053548 push eax ;第二个seed入栈
5A053549 call sub_5A053AD3
5A05354E add esp 4
5A053551 mov [ebp+seed_two] eax
5A053557 mov edx [ebp+seed_two]
.
.
5A053628 mov [ebp+var_10] eax
5A05362B mov [ebp+seed_two] 3D4DA1D6h ;隐藏5A053635 jmp loc_5A053735
将seed隐藏能很好的防止内存dump工具将seed解出来。解seed的过程只能在特定位置并且是运行时才可以!
总结:
LC_CHECKOUT ---
|
|
_l_good_lic_key― /*加密的keys*/
|
|
_l_ckout_crypt---/*解密的keys*/
|
|
_real_crypt---
|
|
_l_ckout_string_key---
|
|
5A0533EA /*计算第一个seed*/
|
|
5A053547 /*计算第二个seed*/
|
|
5A0539DB <-
|
|
5A0539CD--- /*license比较*/
现在我们可以修改lm_code.h并且编译lmcrypt。使用3D4DA1D6h这样的字节模式,我们在AddInlm.dll中找类似的位置。其实我们只需要LC_CHECKOUT作为feature名。使用其他的模式能得到相应的位置(对于没有flexlm SDK的朋友来说,比较有用):
jutil.dll AddInlm.dll Selicwiz.exe
5A0533EC 046CAEDC 00428C6C
.
5A0539CD 046CB4BD 0042924D
The origin of the above code is the object lm_ckout.obj winthin the lmgr.lib library.(大体意思是上面的代码从那里来的)
|
|
5A0533EA /*计算第一个seed*/
|
5A053547 /*计算第二个seed*/
|
5A0539DB <-
| |
5A0539CD--- /*license比较*/
|
--
翻译得不好,大虾莫笑:P
--------------------------------------------------------------------------------
Copyright © -2003 看雪学院(www.pediy.com) All Rights Reserved
篇2:同学友谊的文章
我们曾经互相嫌弃,我们现在相互缅怀
记得天很蓝,永远都是。
我们却总不怜惜她的色。
记得云一尘不染,一直未变。
我们却总辜负她的情。
我们坐在蓝天下,没有躺着看云;
我们坐在草地上,没有笑着对天。
就这样,嬉笑,打闹。
坐着看着他笑,站起追着他跑。
操场上,体育课,
整日叫着无聊的女生还不是去那片草地上惬意地偷瞄帅哥哥了;
整日喊着累热的男生还不是去篮球场上得意的吸引小妹妹了。
天外可以有飞仙,窗内必须有洞天。
在窗内,
那些个日子,我们努力并快活着,
那些个日子,我们叫累并快乐着。
我们可以一起努力·奋斗·八卦·
我们可以一起哭泣·谩骂·惊吓·
我们抱成团哭泣,我们分散开怀恋。
曾经的往事里,我们互相嫌弃;
分开的岁月里只留嫌弃任凭我们缅怀。
——永远的朋友
篇3:同学友谊的文章
朋友,不说再见
当雨露打湿清晨小草的时候
当斜阳照在流水河桥的时候
那远去的朋友,你们在何处
记得上初中,小学的朋友散了
上了高中,初中的感情淡了
而现在上了大学
高中的朋友少了
我们每次的相遇
就如电影荧幕最终的谢幕
精彩中夹杂着短暂
来来去去所经历的
宛如一首决别歌
唱的人激情澎湃
听的人眼泪纵横
匆匆是那么的快
离开时,彼此微笑以待
让美丽的记忆刻在脑海
用时间的文字
见证四季的沧桑变化
篇4:同学友谊的文章
回头仰望的月光
夕阳:
如唔。
说“如唔”连自己也会觉得脸红,毕竟3年的时间,物不再是,人也非。
不晓得你现在过得怎么样。
会不会在平淡的日子里,拉响小提琴,给生活添加元素。
会不会经常被偶尔看到的画面吸引,从而静静坐下来拿起画笔细细勾勒。
会不会在某一时间坐在咖啡馆里休憩,端起搅拌好的咖啡,不喝却观察窗外穿梭的人群。
会不会在夜里望着黑暗中最亮的星,怔怔出神,喃喃细语。
我记得你说过时间就像流水,用时取一瓢,不用随它流逝,留不住时间,却留得住回忆,平淡的日子里,想起渴时喝过的流水,如在喉动,冷暖甘苦犹自知。
你当时微笑地说着,我把它记在了心里,现在想来你说的很对,那时甘苦与共,现在冷暖自知,也算是映衬了你的“预言”。
我听闻了你获奖的消息,美术界一颗耀眼的东方新星,很高兴也很自豪。
我不懂艺术,但容易被你的画吸引,色彩之间勾勒出一个和谐完美的心灵世界,如阳光般照进内心,有感动,有怀念,有希望,有未来。
你说这就是生活元素,我当时不太懂,现在我想问问你,当元素中缺少了一块要用什么色彩来弥补?
你前进的脚步不曾停留,梦想着踏遍欧洲古迹风景,描绘出浓郁的自由气息。
你擅长抓取时间定格那一刻的人或物,赋予他们流动的色彩。
你送给我的那幅画我还保存着,温暖的阳光透过青绿的树叶,如网覆盖在树下休息的人身上。
第一眼看到的只是人和树影,却不会注意到那忽隐忽现的阳光。
你说当习惯了身边的事物,发生的一切也都觉得理所当然,正因为没有正视阳光的勇气,所以才会置身树影下,也就掩藏了人本来拥有却掩盖的一部分。
你还记得地铁里那件事吗?今天我回来时又看到了乞讨的人,无动于衷的人很多,我读懂了他们眼中的漠视与厌恶。
本来不该在人性中存在的东西,却围绕在我身边,感到无奈的同时又对他们表示赞同。
我记得你当时把1元硬币郑重地递到他们手中,现在我不知你会不会还这样做,可我却这样做了,尽管我在乞讨者眼中看不到困苦、伤心与贫穷,看到的是急躁、无奈与不堪,我还是像你一样做了,却没有看到当时你得到的.类似感激的眼神。
我想说他们变了,却也感觉到自己也变了。
不知你在国外有没有遇到乞讨的人,也不晓得你会不会拿出一枚硬币郑重的递到他们手中。
前些日子阳光和煦的下午,我去公园散步,走累了坐在在长椅上休息,手捧一本小说,低头细细阅读,不远处嬉闹的笑声引起了我的注意。
像是学生的一男一女肩并肩靠在一起,摆弄着相机,不时发出爽朗的笑声与羞怒的神态,阳光照耀下的两人浑身散发着青春朝气的气息。
下意识的拿出相机给他俩拍了照,不想被发现了,当他们看到我拍的照片之后,欣喜的的样子惹人惊讶,可能他们从没注意到自然与爱情合成的浪漫元素。
上次和几个老同学一起在蜀上人家吃饭,难得聚在一起,自然是气氛活跃,几个男士推杯换盏,喝得东倒西歪。
我去洗手间时遇到了亦磊,他一个人靠在墙上仰着头对着窗外发呆,看到我说了一句:“13个小时后的月亮是不是也这么明亮?”我没有把这件事告诉远在美国的心怡,我不能够确信他这句话的份量是否会再次伤害到心怡,毕竟她在美国过得很好,痴恋了亦磊那么些年,若无花何来果实。
你说羡慕亦磊的果断,也赞许心怡的勇气,其实只是你无法想象当你头顶着乌云,月光被遮住那一刻的茫然无措,我不能够确定我现在看到的月光是不是能够在7小时候洒满汉堡那片土地。
你说过,在某一地点、某一时间、某一事件结合起来的片段能够唤醒脑海中存在的记忆,不论发生与未发生,都会觉得似曾相识。
我一直固执的相信,随着时间的流逝,记忆能力也会慢慢消退,很难想象忘记了某些事情却突然想起来那一刻的惊喜与失落,但是我却不用想象了。
我想问的是,有没有偶然间听到的某句话,偶尔看到的某个画面,无意中置身的某个场景,能让你想起某个人、某件事,触动心弦,使你嘴角轻轻上扬,就像一滴水落在平静的湖面,荡起涟漪。
当你眼中映满了异国他乡的多彩风景,能不能够在你的画纸上腾出一小块儿地方来容纳似有似无的情感波动,哪怕是只有惊喜没有失落。
像一句歌词里唱的那样“夜空中最亮的星,能否听清,那仰望的人心底的孤独和叹息”,我在想,地球为什么是圆的?如果是方的的,恰巧我们也在一个平面上,而且没有乌云或阴霾来打扰,那必然能够千里共婵娟,浩瀚的宇宙挥洒下了点点星光,点缀夜空,星光下的我向它们诉说:即使我们终将老去,那哺育了大地的日月也会万寿无疆,那大地上的某个公园里某个角落的温馨记忆不会消失,那记录一个个片段的人不会改变,因为那颗心始终、未曾改变。
有人说夕阳与晨曦始终是站在对立的两头,我笑了笑回答,为什么不是晨曦追着夕阳跑,每一分,每一秒,时间不息,脚步不止。
时常眺望窗外的风景,楼下牵着宠物散步的中老年人,马路上的川流不息车辆和人群,林立的高楼大厦,还有永恒不变的日月光辉。
我知道你一直是在画,却不晓得你有没有让人给自己画过素描,如若看到画中的自己,画中的人现实中的自己相似,却有着不一样的地方。
你的道路前方有一盏明灯,看得到却不知道要走多远才能抵达,我不知道你会不会有茫然的时候,如果有的话,那不妨回头看看,也许身后不远处你会看到残存在你心里,那似已经被遗忘的风景,什么都没变,美丽却更甚从前。
祝时时安。
晨曦
篇5:致同学-优美文章
致同学-优美文章
从春到夏 ,从秋到冬,一年又一年,叠出的是同学间不朽的深情。整整半个世纪的奔波,让我们这些当年的丫头小伙,变成了如今的婆婆老翁。那时,我们曾一起约定,与人生的梦想同行,为祖国的繁荣发展,奉献我们的青春年华,为人类的共同进步,发挥我们的聪明才智,为了给全世界带来光明,愿燃尽我们的一生。你曾说,要做一名医生,为人类摆脱疾病的折磨;他曾说,要做一名合格的军人,用真诚和良知捍卫世界和平;他和她们曾说,我要做一名科学家,我要做一名企业家,我要做一名园丁。
时代为我们提供了尽显才华的.条件,抓住了机遇,我们就成就了自己的梦。我们用坚实的步伐,在自己走过的大道上,留下了一串串辉煌的脚印,我们用自己勤劳的双手,和滋滋不断的追求,成就了自己的人生。但是啊,我们没有忘记,我们的母亲河是安帮河,我们共同的家叫双丰。这里永远是我们的根。从这里出发,再到位这里聚首,半个世纪的风云,一起涌上心头。
见了面的没有见过面的,多么想表示一下,我对你们的思念之情。那怕是借助电讯和荧屏,也无法尽情表达我此时的心情。懂存正你的身体还好吧!袁三晓峰是否还是那么英俊年青,维华你还是那么聪明漂亮吧!甫菊你是否还那么文静。龙章的产业园又扩大了吧,运书的孙子是否上了初中?锡玉还是那么豁达活泼,洪章变的是那么灰谐,谈笑风声。清文还是那么坦诚实在,费哥国辉还是那么老诚持重。淑华还是那么勤劳执着,卫群还是那么慈善文明。喜萍还是那么刚毅坚强,刘玉我知道你对同学,总是那么热情真诚。不知怎的,我心里还特别惦记,四十年前班上的那个“哭吧精”。当着孙子外孙们的面,我们可能不好意思动容。但人越是老了,就越是有一种思念,在心中萌生。思念我的老同学,愿你们的心里依旧,还是那么年青。
篇6: 同学的哲理文章
同学的哲理文章
春节回了一趟老家,正好赶上高中同学聚会。二十年后再相会,大家都激动不已,陆续赶到约定的酒店
就座之后,同学们除了叙旧之外,更多的是打听各自的工作单位和职务。喝酒之前,大家轮流作了自我介绍,一听才知道,同学之中还真有不少干得不错的,有当官的,也有当老板的,有搞教育的`,还有搞文艺的。其中有一位同学介绍自己时非常谦虚地说,我就是一个小小的财务处长,让大家见笑了。还有一位同学自我介绍是一个小老板,请大家多关照。
听他们二位一介绍,大家都心知肚明,看来这两位来头不小啊。因为我们都明白,干得越好的人往往越谦虚。酒杯端起之后,大家便开始互相敬酒。非常明显的是,同学们对这两位当财务处长和老板的同学尤为尊敬,频频向他们敬酒,和他们寒暄。
见此情形,我忍不住在心底自问:这是什么世道,同学之间的身份差距也会这么明显?二十几年的同学情都跑哪去了,难道聚会就是为了多结识几位有身份的同学吗?如果同学之间也这么势利,那这世上还有什么真情可言?
怀着复杂的心情,我勉强喝完了这场盼了二十个年头却让人大失所望的同学聚会酒。离开酒店时,一位同学建议大家把联系方式留下来,以便以后搞个同学通讯录。大家积极响应,纷纷在预先准备好的签字本上把自己的单位、职务等写下来。
不用说,大家最关注的自然是刚才那两位自称当财务处长和老板的同学,可是结果令同学们大失所望――那位财务处长竟然是他们村的一名会计,而另一位自称老板的竟然是村里开的一家百货店的店主。当然,人家说的也没错,这两个职务完全可以这么称呼,只是同学们想得太多了。
见此情形,几位同学忍不住发出了轻蔑的笑声。轮到我写联系方式了,我如实填上了自己在某省直机关任副主任的内容。一位同学看我写完便大声疾呼:“好家伙,江辉生你可以啊,一声不响的,竟然在省直机关当上副主任了!你也不和我们说一声啊!”听这位同学一喊,旁边的几个同学赶紧跑过来,满脸堆笑,准备跟我聊天。
见此情形,我只好谎称有事,打了一辆出租匆匆逃开了。
篇7:英语感谢信及翻译文章
Dear David
I am writing this letter is to want to thank you for giving me guidance.
When I arrived in the city is my a complete stranger. Once again, I don't know the road in the heart of the city streets, completely lost, although I stopped to ask somebody else from time to time, also was not used. As you know, it is the first time I came to the big city.
I bought a guide, but there are still many problems when turning in city. Streets and shops let me very confused, so I prefer to stay indoors. Is your precious help let I can walk in the city, and won't get lost. Now, I began to know how to take tram or bus. Yesterday my classmates and I go to downtown to buy stationery.
A few more days of school. Next week I will come to see you, tell you my situation.
your
Linda
亲爱的David
我写这封信是想谢谢你给我的指导。
我到达这座城市的时候是我一个完全的陌生人。又一次我在市中心的街上不知道路,完全迷失了,虽然我时不时地停下来向人家问路,也没有用。正如你所知,那是我第一次来到这座大城市。
我买了一本指南,但是在城市里面转的时候仍然有很多问题。街道和商店让我非常迷惑,以至于我宁愿待在室内。是你的珍贵的帮助让我能够在城市里行走,而不会迷路。现在我开始知道怎样坐电车或者公交车。昨天我和同学去市中心买了文具。
再过几天就开学了。下周我会来看你,告诉你我的情况。
你的
Linda
>>>下一页更多“英语感谢信范文及翻译”
篇8:英语励志文章翻译
There is no better school than adversity. Every defeat, every heartbreak, every loss, contains its own seed, its own lesson on how to improve my performance next time. Never again will I contribute to my downfall by refusing to face the truth and learn from my past mistakes. Because I know: gems cannot shine without polish, and I can not perfect myself without hardship.
Now I know that there are no times in life when opportunity, the chance to be and do gathers so richly about my soul when it has to suffer cruel adversity. Then everything depends on whether I raise my head or lower it in seeking help. Whenever I am struck down, in the future, by any terrible defeat, I will inquire of myself, after the first pain has passed, how I can turn that adversity into good. What a great opportunity that moment may present……to take the bitter root I am holding and transform it into fragrant garden of flowers.
Always will I seek the seed of triumph in every adversity.
译文
逆境是一所最好的学校。每一次失败,每一次打击,每一次损失,都蕴育着成功的萌芽,都教会我在下一次有更出色的表现。我再也不会逃避现实,也不会拒绝从以往的错误中获取经验,我不再因此而促成自己的失败。因为我知道,宝玉不经磨砺就不能发光,没有,我也不能完善自我。
现在我知道,灵魂倍受煎熬的时刻,也正是生命中最多选择与机会的时刻。任何事情的成败取决于我在寻求帮助时是抬起头还是低下头。无论何时,当我被可怕的失败击倒,在最初的阵痛过去之后,我都要想方设法将苦难变成好事。伟大的机遇就在这一刻闪现——这苦涩的根必将迎来满园芬芳!
【同学翻译的FlexLm文章】相关文章:
1.英文文章翻译
2.同学友谊的文章
6.文章
7.同学寄语
8.“小蜜蜂”同学
9.同学赠言
10.同学感言






文档为doc格式