找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 15|回复: 0

易语言4.14完美修改版

[复制链接]

32万

主题

0

回帖

96万

积分

超级版主

积分
964681
发表于 2025-3-14 11:27:03 | 显示全部楼层 |阅读模式
软件标签:  易语言   编程工具
易语言4.14完美修改版是一款为易语言用户打造的易语言4.14修改版最新版本,这个版本相对于其他版本,更加完美,绿色资源网小编为您准备了最详细的修改过程!喜欢就来瞧一瞧吧!
软件介绍:
易语言降低了广大电脑用户编程的门槛,尤其是根本不懂英文或者英文了解很少的用户,可以通过使用本语言极其快速地进入windows程序编写的大门。易语言汉语编程环境是一个支持基于汉语字、词编程的、全可视化的、跨主流操作系统平台的编程工具环境;拥有简、繁汉语以及英语、日语等多语种版本;能与常用的编程语言互相调用;具有充分利用api,com、dll、ocx组件,各种主流数据库,各种实用程序等多种资源的接口和支撑工具。
修改过程:
修改过程跟 易语言4.13 版本的时候基本相同,不过这次主要总结3个步骤即可到位~

----------------------

159544386.key ? ? ? ?[企业注册版]

159544386 → [09800000 xor 00027442] → 0x09827442(十六进制) [硬件代码计算值]

3a7fef86d9a344bd279538025a6b881ed798010002deea0151b9c722075e0618f6b153acb49b357e402df46bb4169e78e7cd6760544cd4c4419373a6aeea5b2ca46c0cdb3a2cd98e980ef419dbe10ea4f470b097172a44db547d505daf6187b8fcc4153a7fe91beb33be7fc71913c0fd26f7f6fe36b24c824fcfa51f2795ef0294cdc0c2f9917b370a5db5f2d95bc05d328d0ba8d28442c2b451d7ae3e25e0585793f9ba8e4cc40460e58f38a49233145220218feb7371944c5d41184b329739cb70792d6d04823c5af45fe62de7a3f6420ffecf6ead0f8a83d9d21bf6433faba1732b91cf085f0cdd4f0ca305fed4b717b4d1390b25add104578b63d252535be04e362ada6820117e8e274e7d93a0605ead954c3afff3c8f4bade8

----------------------

1.第一步如何找到注册关键位置及修改方法,[企业注册版]key的硬件代码[159544386]计算过程...

//由于我们现在要修改的是 易语言 的硬盘注册方式,所以首先我们查找取硬盘特征关键信息字符 "\.physicaldrive0"

----------------------

ultra string reference, 条目 553

address=004314a6

disassembly=push e.005868b8

text string=\.physicaldrive0

//在 [004314a6] 下硬件断点,然后f9运行看看.

----------------------

00431490 ?/$ ?81ec 54020000 sub esp, 254 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ; ?① 取硬盘硬件码信息

00431496 ?|. ?53 ? ? ? ? ? ?push ebx

00431497 ?|. ?33db ? ? ? ? ?xor ebx, ebx

00431499 ?|. ?56 ? ? ? ? ? ?push esi

0043149a ?|. ?53 ? ? ? ? ? ?push ebx ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ; /htemplatefile => null

0043149b ?|. ?53 ? ? ? ? ? ?push ebx ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ; |attributes => 0

0043149c ?|. ?6a 03 ? ? ? ? push 3 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ; |mode = open_existing

0043149e ?|. ?53 ? ? ? ? ? ?push ebx ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ; |psecurity => null

0043149f ?|. ?6a 03 ? ? ? ? push 3 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ; |sharemode = file_share_read|file_share_write

004314a1 ?|. ?68 000000c0 ? push c0000000 ? ? ? ? ? ? ? ? ? ? ? ? ? ?; |access= generic_read|generic_write

004314a6 ?|. ?68 b8685800 ? push e.005868b8 ? ? ? ? ? ? ? ? ? &nb
sp; ? ? ?; |\.physicaldrive0
004314ab ?|. ?ff15 5cc25400 call dword ptr ds:[<&kernel32.createfile>; createfilea

004314b1 ?|. ?8bf0 ? ? ? ? ?mov esi, eax

004314b3 ?|. ?83fe ff ? ? ? cmp esi, -1

004314b6 ?|. ?0f84 c0000000 je e.0043157c

......省略部分代码

00431569 ?|> 56 ? ? ? ? ? ?push esi ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ; /hobject

0043156a ?|. ?ff15 78c25400 call dword ptr ds:[<&kernel32.closehandl>; closehandle

00431570 ?|. ?5f ? ? ? ? ? ?pop edi

00431571 ?|. ?8bc3 ? ? ? ? ?mov eax, ebx

00431573 ?|. ?5e ? ? ? ? ? ?pop esi

00431574 ?|. ?5b ? ? ? ? ? ?pop ebx

00431575 ?|. ?81c4 54020000 add esp, 254

0043157b ?|. ?c3 ? ? ? ? ? ?retn ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ; 这里返回到上一层

----------------------

004315b6 ?|. ?8bd0 ? ? ? ? ?mov edx, eax

004315b8 ?|. ?be 01000000 ? mov esi, 1

004315bd ?|. ?85d2 ? ? ? ? ?test edx, edx

004315bf ?|. ?75 2e ? ? ? ? jnz short e.004315ef

......省略部分代码

004315f5 ?|. /74 0a ? ? ? ? je short e.00431601

004315f7 ?|. |8bca ? ? ? ? ?mov ecx, edx

004315f9 ?|. |f7d9 ? ? ? ? ?neg ecx

004315fb ?|. |1bc9 ? ? ? ? ?sbb ecx, ecx

004315fd ?|. |23ce ? ? ? ? ?and ecx, esi

004315ff ?|. |8908 ? ? ? ? ?mov dword ptr ds:[eax], ecx

00431601 ?|> 8bc2 ? ? ? ? ?mov eax, edx

00431603 ?|. ?5e ? ? ? ? ? ?pop esi

00431604 ?. ?c3 ? ? ? ? ? ?retn ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ; 这里返回到上一层

----------------------

......................

00457203 ?|. ?8d4d f8 ? ? ? lea ecx, [local.2]

00457206 ?|. ?51 ? ? ? ? ? ?push ecx

00457207 ?|. ?e8 a4a3fdff ? call e.004315b0 ? ? ? ? ? ? ? ? ? ? ? ? ?; ?① 取硬盘硬件码信息

0045720c ?|. ?83c4 04 ? ? ? add esp, 4 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ; ?这里出来以后很多花花(⊙o⊙)哦!

0045720f ?|. ?8bf0 ? ? ? ? ?mov esi, eax ? ? ? ? ? ? ? ? ? ? ? ? ? ? ; ?eax = 取硬盘特征字()

......................

00457215 ?|. ?85f6 ? ? ? ? ?test esi, esi

00457217 ?|. ?75 25 ? ? ? ? jnz short e.0045723e

......................

0045721c ?|. ?ff05 18955900 inc dword ptr ds:[599518]

......................

00457225 ?|. ?833d 18955900>cmp dword ptr ds:[599518], 6

0045722c ?|. ?75 10 ? ? ? ? jnz short e.0045723e


......................
00457239 ?|. ?be 73191511 ? mov esi, 11151973

......................

00457241 ?|. ?85f6 ? ? ? ? ?test esi, esi

00457243 ?|. ?0f84 f8010000 je e.00457441

......................

00457254 ?|. ?ff15 4cc25400 call dword ptr ds:[<&kernel32.gettickcou>; [gettickcount

0045725a ?|. ?a3 d8925900 ? mov dword ptr ds:[5992d8], eax

......................

00457262 ?|. ?a1 1c8f5900 ? mov eax, dword ptr ds:[598f1c]

00457267 ?|. ?85c0 ? ? ? ? ?test eax, eax

00457269 ?|. ?74 29 ? ? ? ? je short e.00457294

......................

0045726e ?|. ?56 ? ? ? ? ? ?push esi

0045726f ?|. ?e8 6cf0ffff ? call e.004562e0

00457274 ?|. ?35 9a3b5400 ? xor eax, 543b9a

00457279 ?|. ?83c4 04 ? ? ? add esp, 4

0045727c ?|. ?a3 70935900 ? mov dword ptr ds:[599370], eax

......................

00457285 ?|. ?8135 70935900>xor dword ptr ds:[599370], 8912fcd

0045728f ?|. ?e9 5a010000jmpe.004573ee

00457294 ?|> ?53 ? ? ? ? ? ?push ebx

00457295 ?|. ?57 ? ? ? ? ? ?push edi

......................

004572a1 ?|. ?68 dc050000 ? push 5dc

004572a6 ?|. ?68 803e0000 ? push 3e80

004572ab ?|. ?68 71020000 ? push 271

004572b0 ?|. ?56 ? ? ? ? ? ?push esi

004572b1 ?|. ?e8 4a4f0800 ? call e.004dc200 ? ? ? ? ? ? ? ? ? ? ? ? ?; ?② 计算硬盘特征信息

004572b6 ?|. ?83c4 10 ? ? ? add esp, 10

004572b9 ?|. ?8945 e0 ? ? ? mov [local.8], eax

......................

004572c7 ?|. ?8bf0 ? ? ? ? ?|mov esi, eax

004572c9 ?|. ?25 ffff0f00 ? |and eax, 0fffff

004572ce ?|. ?c1ee 10 ? ? ? |shr esi, 10

004572d1 ?|. ?81e6 f0ff0000 |and esi, 0fff0

004572d7 ?|. ?33f0 ? ? ? ? ?|xor esi, eax

......................

004572dc ?|. ?68 2c010000 ? |push 12c

004572e1 ?|. ?68 401f0000 ? |push 1f40

004572e6 ?|. ?68 e2040000 ? |push 4e2

004572eb ?|. ?56 ? ? ? ? ? ?|push esi

004572ec ?|. ?e8 0f4f0800 ? |call e.004dc200 ? ? ? ? ? ? ? ? ? ? ? ? ; ?② 计算硬盘特征信息

004572f1 ?|. ?83c4 10 ? ? ? |add esp, 10

004572f4 ?|. ?8945 e4 ? ? ? |mov [local.7], eax

......................

004572fa ?|. ?8bd8 ? ? ? ? ?|mov ebx, eax

004572fc ?|. ?81e3 ff000000 |and ebx, 0ff

......................

00457305 ?|. ?8bc8 ? ? ? ? ?|mov ecx, eax

00457307 ?|. ?81e1 000000ff |and ecx, ff000000

......................

00457311 ?|. ?25 00ff0000 ? |and eax, 0ff00

......................

00457324 ?|. ?ba e44c5900 ? |mov edx, e.00594ce4

00457329 ?|> ?8b7a fc ? ? ? |/mov edi, dword ptr ds:[edx-4]
; ?[edx-4] = ds:[00594ce0]=cc051311
//ds:[00594ce0]此处需要修改内存值,把 cc051311 改成 00000000

//00594ce0 ?00 00 00 00 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?....

//暂时可以先记录下来不进行修改...

0045732c ?|. ?85ff ? ? ? ? ?||test edi, edi

0045732e ?|. ?74 5f ? ? ? ? ||je short e.0045738f ? ? ? ? ? ? ? ? ? ?; ? 必须跳,否则硬盘码计算值则不等于 159544386

......................

00457337 ?|. ?8b7a fc ? ? ? ||mov edi, dword ptr ds:[edx-4]

0045733a ?|. ?33fe ? ? ? ? ?||xor edi, esi

......................

00457340 ?|. ?337a 08 ? ? ? ||xor edi, dword ptr ds:[edx+8]

......................

0045734e ?|. ?333a ? ? ? ? ?||xor edi, dword ptr ds:[edx]

......................

00457353 ?|. ?3b7a 04 ? ? ? ||cmp edi, dword ptr ds:[edx+4]

00457356 ?|. ?74 09 ? ? ? ? ||je short e.00457361

......................

0045735c ?|. ?83c2 10 ? ? ? ||add edx, 10

0045735f ?|.^ eb c8 ? ? ? ? |jmp short e.00457329

......................

00457365 ?|. ?8b75 e0 ? ? ? |mov esi, [local.8]

00457368 ?|. ?68 ac000000 ? |push 0ac

0045736d ?|. ?68 c4090000 ? |push 9c4

00457372 ?|. ?68 a00f0000 ? |push 0fa0

00457377 ?|. ?56 ? ? ? ? ? ?|push esi

00457378 ?|. ?e8 834e0800 ? |call e.004dc200 ? ? ? ? ? ? ? ? ? ? ? ? ; ?② 计算硬盘特征信息

0045737d ?|. ?83c4 10 ? ? ? |add esp, 10

00457380 ?|. ?33f0 ? ? ? ? ?|xor esi, eax

00457382 ?|. ?8975 e0 ? ? ? |mov [local.8], esi

......................

00457388 ?|. ?8bc6 ? ? ? ? ?|mov eax, esi

0045738a ?|.^ e9 2dffffff ? jmp e.004572bc

......................

00457396 ?|. ?33d2 ? ? ? ? ?xor edx, edx

00457398 ?|. ?8a55 e6 ? ? ? mov dl, byte ptr ss:[ebp-1a]

......................

004573c3 ?|. ?33d3 ? ? ? ? ?xor edx, ebx

004573c5 ?|. ?24 00 ? ? ? ? and al, 0

004573c7 ?|. ?c1e2 08 ? ? ? shl edx, 8

004573ca ?|. ?33d0 ? ? ? ? ?xor edx, eax

004573cc ?|. ?c1e9 04 ? ? ? shr ecx, 4

004573cf ?|. ?c1e2 0c ? ? ? shl edx, 0c

004573d2 ?|. ?81e1 0000f00f and ecx, 0ff00000

004573d8 ?|. ?33d1 ? ? ? ? ?xor edx, ecx

004573da ?|. ?0bd6 ? ? ? ? ?or edx, esi

004573dc ?|. ?81f2 5714c508 xor edx, 8c51457

004573e2 ?|. ?8915 70935900 mov dword ptr ds:[599370], edx

......................

004573ec ?|. ?5f ? ? ? ? ? ?pop edi

004573ed ?|. ?5b ? ? ? ? ? ?pop ebx

......................

004573f1 ?|. ?8b15 d8925900 mov edx, dword ptr ds:[5992d8]

004573f7 ?|. ?8b35 70935900 mov esi, dword ptr ds:[599370]<
/p>
004573fd ?|. ?33f2 ? ? ? ? ?xor esi, edx

004573ff ?|. ?8935 70935900 mov dword ptr ds:[599370], esi

......................

00457408 ?|. ?8135 70935900>xor dword ptr ds:[599370], 8c51457

......................

00457416 ?|. ?b9 488a5900 ? mov ecx, e.00598a48

0045741b ?|. ?e8 70460500 ? call e.004aba90 ? ? ? ? ? ? ? ? ? ? ? ? ?; ?③ key文件读取

......................

0045742b ?|. ?a1 c0905900 ? mov eax, dword ptr ds:[5990c0]

00457430 ?|. ?85c0 ? ? ? ? ?test eax, eax

00457432 ?|. ?74 07 ? ? ? ? je short e.0045743b

......................

0045743f ?|. ?eb 1f ? ? ? ? jmp short e.00457460

......................

00457445 ?|. ?a1 f4925900 ? mov eax, dword ptr ds:[5992f4]

0045744a ?|. ?68 40714500 ? push e.00457140 ? ? ? ? ? ? ? ? ? ? ? ? ?; /timerproc = e.00457140

0045744f ?|. ?68 88130000 ? push 1388 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?; |timeout = 5000. ms

00457454 ?|. ?6a 70 ? ? ? ? push 70 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?; |timerid = 70 (112.)

00457456 ?|. ?8b48 1c ? ? ? mov ecx, dword ptr ds:[eax+1c] ? ? ? ? ? ; |

00457459 ?|. ?51 ? ? ? ? ? ?push ecx ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ; |hwnd

0045745a ?|. ?ff15 94c65400 call dword ptr ds:[<&user32.settimer>] ? ; settimer

......................

0045746b ?|. ?5e ? ? ? ? ? ?pop esi

0045746c ?|> ?8be5 ? ? ? ? ?mov esp, ebp

0045746e ?|. ?5d ? ? ? ? ? ?pop ebp

0045746f ?. ?c2 1000 ? ? ? retn 10

----------------------

004dc200 ?/$ ?8b4c24 0c ? ? mov ecx, dword ptr ss:[esp+c] ? ? ? ? ? ?; ?② 计算硬盘特征信息

004dc204 ?|. ?55 ? ? ? ? ? ?push ebp

004dc205 ?|. ?8b6c24 14 ? ? mov ebp, dword ptr ss:[esp+14]

004dc209 ?|. ?56 ? ? ? ? ? ?push esi

004dc20a ?|. ?57 ? ? ? ? ? ?push edi

004dc20b ?|. ?8b7c24 14 ? ? mov edi, dword ptr ss:[esp+14]

004dc20f ?|. ?85ed ? ? ? ? ?test ebp, ebp

004dc211 ?|. ?7e 28 ? ? ? ? jle short e.004dc23b

004dc213 ?|. ?8b7424 10 ? ? mov esi, dword ptr ss:[esp+10]

004dc217 ?|. ?53 ? ? ? ? ? ?push ebx

004dc218 ?|. ?8bdd ? ? ? ? ?mov ebx, ebp

004dc21a ?|> ?8bc6 ? ? ? ? ?/mov eax, esi

004dc21c ?|. ?33d2 ? ? ? ? ?|xor edx, edx

004dc21e ?|. ?f7f7 ? ? ? ? ?|div edi

004dc220 ?|. ?8bc6 ? ? ? ? n
bsp;|mov eax, esi
004dc222 ?|. ?0fafd1 ? ? ? ?|imul edx, ecx

004dc225 ?|. ?895424 14 ? ? |mov dword ptr ss:[esp+14], edx

004dc229 ?|. ?33d2 ? ? ? ? ?|xor edx, edx

004dc22b ?|. ?f7f7 ? ? ? ? ?|div edi

004dc22d ?|. ?8b5424 14 ? ? |mov edx, dword ptr ss:[esp+14]

004dc231 ?|. ?03d0 ? ? ? ? ?|add edx, eax

004dc233 ?|. ?4b ? ? ? ? ? ?|dec ebx

004dc234 ?|. ?8bf2 ? ? ? ? ?|mov esi, edx

004dc236 ?|.^ 75 e2 ? ? ? ? jnz short e.004dc21a

004dc238 ?|. ?5b ? ? ? ? ? ?pop ebx

004dc239 ?|. ?eb 04 ? ? ? ? jmp short e.004dc23f

004dc23b ?|> ?8b7424 10 ? ? mov esi, dword ptr ss:[esp+10]

004dc23f ?|> ?c1e1 0a ? ? ? shl ecx, 0a

004dc242 ?|. ?33ce ? ? ? ? ?xor ecx, esi

004dc244 ?|. ?33cf ? ? ? ? ?xor ecx, edi

004dc246 ?|. ?5f ? ? ? ? ? ?pop edi

004dc247 ?|. ?8bc1 ? ? ? ? ?mov eax, ecx

004dc249 ?|. ?5e ? ? ? ? ? ?pop esi

004dc24a ?|. ?c1e0 04 ? ? ? shl eax, 4

004dc24d ?|. ?33c5 ? ? ? ? ?xor eax, ebp

004dc24f ?|. ?5d ? ? ? ? ? ?pop ebp

004dc250 ?|. ?c1e0 14 ? ? ? shl eax, 14

004dc253 ?|. ?33c1 ? ? ? ? ?xor eax, ecx

004dc255 ?. ?c3 ? ? ? ? ? ?retn

//此处需要修改一下返回值,修改如下:

//004dc255 ? . /e9 b6ef0600 ? jmp e.0054b210

//0054b210 ? > 8035 80825900>xor byte ptr ds:[598280], 0ff ? ? ? ? ?; ?标记是否返回计算硬件代码

//0054b217 ? . ?74 05 ? ? ? ? je short e.0054b21e

//0054b219 ? . ?b8 42740200 ? mov eax, 27442 ? ? ? ? ? ? ? ? ? ? ? ? ; ?硬件代码后5位

//0054b21e ? > ?c3 ? ? ? ? ? ?retn

//到此,第一步分析和修改基本完成,保存修改内容后先不要重新载入od.

//用ue或winhex修改[00594ce0-00400000=00194ce0]此处修改内容,把 "11 13 05 cc" 改成 "00 00 00 00"

//修改好以后保存文件,再使用od重新载入!

//此时,[f9]运行后,易语言会出现"系统执行文件被非法修改,请检查病毒并重新安装!"的文件校验错误提示...

----------------------

2.第二步如何定位文件校验关键位置及修改方法...

//因为修改后的主程序在运行时会出现信息框提示,那最简单的方法也就是直接api断点: bp messageboxa

----------------------

004317af ?|. ?53 ? ? ? ? ? ?push ebx ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ; /style

004317b0 ?|. ?50 ? ? ? ? ? ?push eax ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ; |title

004317b1 ?|. ?51 ? ? ? ? ? ?push ecx ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ; |text

004317b2 ?|. ?57 ? ? ? ? ? ?push edi ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ; |howner


004317b3 ?|. ?ff15 80c65400 call dword ptr ds:[<&user32.messageboxa>>; messageboxa
004317b9 ?|. ?8bf0 ? ? ? ? ?mov esi, eax

0012f00c ? 004317b9 ?/call 到 messageboxa 来自 e.004317b3

0012f010 ? 00000000 ?|howner = null

0012f014 ? 01096ee8 ?|text = "系统执行文件被非法修改,请检查病毒并重新安装!"

0012f018 ? 01096f38 ?|title = "警告:"

0012f01c ? 00000010 ?style = mb_ok|mb_iconhand|mb_applmodal

//断点停下来后我们返回跟踪

----------------------

0045f493 ? > e8 a8bc0700 ? call e.004db140

0045f498 ? . ?83c4 04 ? ? ? add esp, 4 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ; ?返回到这里后,往上看跳转判断

0045eabf ? . ?8bcb ? ? ? ? ?mov ecx, ebx

0045eac1 ? . ?e8 eaa1ffff ? call e.00458cb0 ? ? ? ? ? ? ? ? ? ? ? ? ?; ?① 文件校验call

0045eac6 ? . ?85c0 ? ? ? ? ?test eax, eax

0045eac8 ? . /75 0a ? ? ? ? jnz short e.0045ead4 ? ? ? ? ? ? ? ? ? ? ; ?文件校验正确则跳

0045eaca ? . ?68 64a75800 ? push e.0058a764

0045eacf ? . ?e9 bf090000 ? jmp e.0045f493

----------------------

00458cb0 ?/$ ?55 ? ? ? ? ? ?push ebp

00458cb1 ?|. ?8bec ? ? ? ? ?mov ebp, esp

00458cb3 ?|. ?6a ff ? ? ? ? push -1

00458cb5 ?|. ?68 38fc5300 ? push e.0053fc38 ? ? ? ? ? ? ? ? ? ? ? ? ?; ?se 处理程序安装

00458cba ?|. ?64:a1 0000000>mov eax, dword ptr fs:[0]

00458cc0 ?|. ?50 ? ? ? ? ? ?push eax

00458cc1 ?|. ?64:8925 00000>mov dword ptr fs:[0], esp

00458cc8 ?|. ?81ec c40f0000 sub esp, 0fc4

00458cce ?|. ?53 ? ? ? ? ? ?push ebx

00458ccf ?|. ?56 ? ? ? ? ? ?push esi

00458cd0 ?|. ?57 ? ? ? ? ? ?push edi

00458cd1 ?|. ?8bf1 ? ? ? ? ?mov esi, ecx

00458cd3 ?|. ?8965 f0 ? ? ? mov [local.4], esp

00458cd6 ?|. ?8975 ec ? ? ? mov [local.5], esi

......................

00458da4 ?|> 3b7c9d d4 ? ? |cmp edi, dword ptr ss:[ebp+ebx*4-2c] ? ?; ? 在此记录 edi 的值及 ss:[ebp+ebx*4-2c] 的值

00458da8 ?|. ?75 11 ? ? ? ? |jnz short e.00458dbb

00458daa ?|. ?8b449d e4 ? ? |mov eax, dword ptr ss:[ebp+ebx*4-1c]

00458dae ?|. ?85c0 ? ? ? ? ?|test eax, eax

00458db0 ?|. ?75 09 ? ? ? ? |jnz short e.00458dbb

00458db2 ?|. ?8b75 ec ? ? ? |mov esi, [local.5]

00458db5 ?|. ?43 ? ? ? ? ? ?|inc ebx

00458db6 ?|.^ e9 6fffffff ? jmp e.00458d2a

----------------------

堆栈 ss:[0012fbc0]=003eda14 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?; ?原主程序文件校验值 [1]

edi=000c64fe ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? &nb
sp; ? ? ? ? ? ? ? ? ; ?现修改程序文件校验值 [1]
堆栈 ss:[0012fbc4]=0023d5f1 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?; ?原主程序文件校验值 [2]

edi=0047e5f1 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ; ?现修改程序文件校验值 [2]

----------------------

//记录完毕两个校验值以后,关闭od~ 是用ue或winhex工具打开主程序并查找十六进制 "14da3e00" 和 "f1d52300"

//找到以后,直接对应修改为现修改程序文件校验值 "fe640c00" 和 "f1e54700",最好还是把修改地址也记录一下,因为一会还需要用到!

//修改完成后,保存文件,运行主程序看看...o(∩_∩)o哈!没有提示了,而且也成功注册了,第二步就算完成了~

//但先别开心,因为易语言还有一个比较隐蔽的内存校验,如果不修改这个校验的话,所编译出来的程序是不会正常的!

----------------------

3.第三步,定位内存校验关键位置及修改方法...

//以前有些易语言修改版出现编译程序不稳定的情况,就都是由于内存校验这部分在作怪!

----------------------

//用od重新载入 [原版的主程序],然后直接在 oep 处下 "内存访问" 断点...//下完内存断点以后,并我们把之前所有的断点都取消,然后[f9]运行看看~

----------------------

00f29131 ? ?8a68 01 ? ? ? ? mov ch, byte ptr ds:[eax+1] ? ? ? ? ? ? ?; 内存断点在此处停下来了 [dp1.00f29131]

00f29134 ? ?8a50 ff ? ? ? ? mov dl, byte ptr ds:[eax-1]

00f29137 ? ?8a08 ? ? ? ? ? ?mov cl, byte ptr ds:[eax]

00f29139 ? ?83c0 04 ? ? ? ? add eax, 4

00f2913c ? ?c1e1 08 ? ? ? ? shl ecx, 8

00f2913f ? ?0bca ? ? ? ? ? ?or ecx, edx

00f29141 ? ?33d2 ? ? ? ? ? ?xor edx, edx

00f29143 ? ?8a50 fa ? ? ? ? mov dl, byte ptr ds:[eax-6]

00f29146 ? ?83c6 04 ? ? ? ? add esi, 4

00f29149 ? ?c1e1 08 ? ? ? ? shl ecx, 8

00f2914c ? ?0bca ? ? ? ? ? ?or ecx, edx

00f2914e ? ?894e fc ? ? ? ? mov dword ptr ds:[esi-4], ecx

00f29151 ? ?8d0c07 ? ? ? ? ?lea ecx, dword ptr ds:[edi+eax]

00f29154 ? ?3bcd ? ? ? ? ? ?cmp ecx, ebp

00f29156 ?^ 72 d5 ? ? ? ? ? jb short dp1.00f2912d

00f29158 ? ?5f ? ? ? ? ? ? ?pop edi

00f29159 ? ?5e ? ? ? ? ? ? ?pop esi

00f2915a ? ?5d ? ? ? ? ? ? ?pop ebp

00f2915b ? ?c2 0c00 ? ? ? ? retn 0c ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?; 返回

----------------------

004989dc ?|. ?8b4c24 28 ? ? mov ecx, dword ptr ss:[esp+28]

004989e0 ?|. ?8b5424 24 ? ? mov edx, dword ptr ss:[esp+24]

004989e4 ?|. ?51 ? ? ? ? ? ?push ecx

004989e5 ?|. ?8b4c24 24 ? ? mov ecx, dword ptr ss:[esp+24]

004989e9 ?|. ?52 ? ? ? ? ? ?push edx

004989ea ?|. ?51 ? ? ? ? ? ?push ecx

004989eb ?|. ?ffd0 ? ? ? ? ?call eax ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ; ?call dp1.mgetmd5

004989ed ?|. ?8d4c24 08 ? ? lea ecx, dword ptr ss:[esp+8] ? ? ? ? n
bsp; ?; ?返回到此处
004989f1 ?|. ?c74424 18 fff>mov dword ptr ss:[esp+18], -1

//现在找到了取内存校验值的位置了,往上面下个硬件断点,然后再重新载入 [已修改过的主程序] 运行分析看看...

----------------------

00498940 ?/$ ?6a ff ? ? ? ? push -1 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?; ?取程序内存数据md5

00498942 ?|. ?68 c83f5400 ? push e.00543fc8 ? ? ? ? ? ? ? ? ? ? ? ? ?; ?se 处理程序安装

00498947 ?|. ?64:a1 0000000>mov eax, dword ptr fs:[0]

0049894d ?|. ?50 ? ? ? ? ? ?push eax

0049894e ?|. ?64:8925 00000>mov dword ptr fs:[0], esp

00498955 ?|. ?83ec 08 ? ? ? sub esp, 8

00498958 ?|. ?56 ? ? ? ? ? ?push esi

00498959 ?|. ?8bf1 ? ? ? ? ?mov esi, ecx

0049895b ?|. ?57 ? ? ? ? ? ?push edi

0049895c ?|. ?68 742c5700 ? push e.00572c74 ? ? ? ? ? ? ? ? ? ? ? ? ?; ?ascii "lib"

00498961 ?|. ?8d86 94080000 lea eax, dword ptr ds:[esi+894]

00498967 ?|. ?8d4c24 10 ? ? lea ecx, dword ptr ss:[esp+10]

0049896b ?|. ?50 ? ? ? ? ? ?push eax

0049896c ?|. ?51 ? ? ? ? ? ?push ecx

0049896d ?|. ?e8 5dfe0700 ? call e.005187cf

00498972 ?|. ?68 d8ab5800 ? push e.0058abd8 ? ? ? ? ? ? ? ? ? ? ? ? ?; ?ascii "dp1.fne"

00498977 ?|. ?8d5424 0c ? ? lea edx, dword ptr ss:[esp+c]

0049897b ?|. ?50 ? ? ? ? ? ?push eax

0049897c ?|. ?52 ? ? ? ? ? ?push edx

0049897d ?|. ?c74424 24 000>mov dword ptr ss:[esp+24], 0

00498985 ?|. ?e8 45fe0700 ? call e.005187cf

0049898a ?|. ?8d4c24 0c ? ? lea ecx, dword ptr ss:[esp+c]

0049898e ?|. ?c64424 18 02 ?mov byte ptr ss:[esp+18], 2

00498993 ?|. ?e8 eefb0700 ? call e.00518586

00498998 ?|. ?8b7c24 2c ? ? mov edi, dword ptr ss:[esp+2c]

0049899c ?|. ?85ff ? ? ? ? ?test edi, edi

0049899e ?|. ?74 07 ? ? ? ? je short e.004989a7

004989a0 ?|. ?8bcf ? ? ? ? ?mov ecx, edi

004989a2 ?|. ?e8 6afb0700 ? call e.00518511

004989a7 ?|> ?8b86 dc090000 mov eax, dword ptr ds:[esi+9dc]

004989ad ?|. ?85c0 ? ? ? ? ?test eax, eax

004989af ?|. ?75 11 ? ? ? ? jnz short e.004989c2

004989b1 ?|. ?8b4424 08 ? ? mov eax, dword ptr ss:[esp+8]

004989b5 ?|. ?50 ? ? ? ? ? ?push eax ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ; /filename

004989b6 ?|. ?ff15 2cc45400 call dword ptr ds:[<&kernel32.loadlibrar>; loadlibrarya

004989bc ?|. ?8986 dc090000 mov dword ptr ds:[esi+9dc], eax

004989c2 ?|> ?8bb6 dc090000 mov esi, dword ptr ds:[esi+9dc]

004989c8 ?|. ?85f6 ? ? ? ? ?test esi, esi

004989ca ?|. &nb
sp;74 4a ? ? ? ? je short e.00498a16
004989cc ?|. ?68 90065900 ? push e.00590690 ? ? ? ? ? ? ? ? ? ? ? ? ?; /procnameorordinal = "mgetmd5"

004989d1 ?|. ?56 ? ? ? ? ? ?push esi ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ; |hmodule

004989d2 ?|. ?ff15 30c45400 call dword ptr ds:[<&kernel32.getprocadd>; getprocaddress

004989d8 ?|. ?85c0 ? ? ? ? ?test eax, eax

004989da ?|. ?74 3a ? ? ? ? je short e.00498a16

004989dc ?|. ?8b4c24 28 ? ? mov ecx, dword ptr ss:[esp+28]

004989e0 ?|. ?8b5424 24 ? ? mov edx, dword ptr ss:[esp+24]

004989e4 ?|. ?51 ? ? ? ? ? ?push ecx

004989e5 ?|. ?8b4c24 24 ? ? mov ecx, dword ptr ss:[esp+24]

004989e9 ?|. ?52 ? ? ? ? ? ?push edx

004989ea ?|. ?51 ? ? ? ? ? ?push ecx

004989eb ?|. ?ffd0 ? ? ? ? ?call eax ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ; ?call dp1.mgetmd5

//当 [esp]=00401000 时注意把所有修改过的代码及断点取消,并把正确的md5值记录下来!

//0012f354 ? 00401000 ?校验起始指针,

//0012f358 ? 0014a20a ?校验数据大小

//0012f35c ? 0012f398 ?ascii "92070940bbb01c83641fcef4758b5a72"

//易语言 4.14 对应正确的md5值 92070940bbb01c83641fcef4758b5a72

004989ed ?|. ?8d4c24 08 ? ? lea ecx, dword ptr ss:[esp+8] ? ? ? ? ? ?; ?返回到此处

004989f1 ?|. ?c74424 18 fff>mov dword ptr ss:[esp+18], -1

004989f9 ?|. ?e8 88fb0700 ? call e.00518586

004989fe ?|. ?5f ? ? ? ? ? ?pop edi

004989ff ?|. ?b8 01000000 ? mov eax, 1

00498a04 ?|. ?5e ? ? ? ? ? ?pop esi

00498a05 ?|. ?8b4c24 08 ? ? mov ecx, dword ptr ss:[esp+8]

00498a09 ?|. ?64:890d 00000>mov dword ptr fs:[0], ecx

00498a10 ?|. ?83c4 14 ? ? ? add esp, 14

00498a13 ?|. ?c2 1000 ? ? ? retn 10

00498a16 ?|> ?85ff ? ? ? ? ?test edi, edi

00498a18 ?|. ?74 32 ? ? ? ? je short e.00498a4c

00498a1a ?|. ?8b5424 08 ? ? mov edx, dword ptr ss:[esp+8]

00498a1e ?|. ?8d4424 2c ? ? lea eax, dword ptr ss:[esp+2c]

00498a22 ?|. ?52 ? ? ? ? ? ?push edx

00498a23 ?|. ?68 7c065900 ? push e.0059067c

00498a28 ?|. ?50 ? ? ? ? ? ?push eax

00498a29 ?|. ?e8 d2620400 ? call e.004ded00

00498a2e ?|. ?83c4 0c ? ? ? add esp, 0c

00498a31 ?|. ?50 ? ? ? ? ? ?push eax

00498a32 ?|. ?8bcf ? ? ? ? ?mov ecx, edi

00498a34 ?|. ?c64424 1c 03 ?mov byte ptr ss:[esp+1c], 3

00498a39 ?|. ?e8 35fc0700 ? call e.00518673

00498a3e ?|. ?8d4c24 2c ? ? lea ecx, dword ptr ss:[esp+2c]

00498a42 ?|. ?c64424 18 02 ?mov byte ptr ss:[esp+18], 2

00498a47 ?|. ?e8 3afb0700 ? call e.00518586

00498a4c &nbs
p;|> ?8d4c24 08 ? ? lea ecx, dword ptr ss:[esp+8]
00498a50 ?|. ?c74424 18 fff>mov dword ptr ss:[esp+18], -1

00498a58 ?|. ?e8 29fb0700 ? call e.00518586

00498a5d ?|. ?8b4c24 10 ? ? mov ecx, dword ptr ss:[esp+10]

00498a61 ?|. ?5f ? ? ? ? ? ?pop edi

00498a62 ?|. ?33c0 ? ? ? ? ?xor eax, eax

00498a64 ?|. ?5e ? ? ? ? ? ?pop esi

00498a65 ?|. ?64:890d 00000>mov dword ptr fs:[0], ecx

00498a6c ?|. ?83c4 14 ? ? ? add esp, 14

00498a6f ?. ?c2 1000 ? ? ? retn 10

//我们就在 [004989eb] 此处进行修改修改吧,o(∩_∩)o~

//记得是修改 [已经修改过] 的那个主程序文件噢...

004989eb ? . /e9 30280b00 ? jmp e_cr_4_1.0054b220

004989f0 ? ? |90 ? ? ? ? ? ?nop

0054b220 ? > ffd0 ? ? ? ? ?call eax

0054b222 ? . ?8d4c24 08 ? ? lea ecx, dword ptr ss:[esp+8]

0054b226 ? . ?3e:817c24 f4 >cmp dword ptr ds:[esp-c], e.00401000 ? ? ; ?入口地址

0054b22f ? . ?75 3e ? ? ? ? jnz short e.0054b26f

0054b231 ? . ?3e:8b7c24 fc ?mov edi, dword ptr ds:[esp-4]

0054b236 ? . ?c707 39323037 mov dword ptr ds:[edi], 37303239

0054b23c ? . ?c747 04 30393>mov dword ptr ds:[edi+4], 30343930

0054b243 ? . ?c747 08 62626>mov dword ptr ds:[edi+8], 30626262

0054b24a ? . ?c747 0c 31633>mov dword ptr ds:[edi+c], 33386331

0054b251 ? . ?c747 10 36343>mov dword ptr ds:[edi+10], 66313436

0054b258 ? . ?c747 14 63656>mov dword ptr ds:[edi+14], 34666563

0054b25f ? . ?c747 18 37353>mov dword ptr ds:[edi+18], 62383537

0054b266 ? . ?c747 1c 35613>mov dword ptr ds:[edi+1c], 32376135

0054b26d ? . ?33ff ? ? ? ? ?xor edi, edi

0054b26f ? >^ e9 7dd7f4ff ? jmp e.004989f1

//修改完毕以后记得保存,不然白做了...

//最后我们还得重复一次 第二步 的文件校验值的修改!

----------------------

堆栈 ss:[0012fbc0]=000c64fe ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?; ?原主程序文件校验值 [1]

edi=00135283 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ; ?现修改程序文件校验值 [1]

堆栈 ss:[0012fbc4]=0047e5f1 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?; ?原主程序文件校验值 [2]

edi=0047e5f1 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ; ?现修改程序文件校验值 [1]

----------------------

//到此为止...整个修改过程已经结束了~

//欢迎各位大侠们对此修改进行完美性的测试,也希望能与大家多多交流...

//授人以鱼,不如授之以渔,授人以鱼只救一时之急,授人以渔则可解一生之需。

//此次我就偷懒一下,不把修改好的文件发出来共享了,就只分享一下我的修改过程!

//也希望能让你们有一个亲自动手学习的机会!

--------------------------------------------------------------------------------

【经验总结】

1.修改程序取硬盘特征数值的算法过程,实现欺骗注册;

2.修改程序对自身文件校验的两个值;

3.替换主程序内存校验值,实现欺骗校验取值,并再次修改程序自身文件校验值!
更新内容:
易语言4.14版相对于4.13更新说明:

对易语言核心支持库、编译器、开发环境的更新:

1.修复了打印机对象的自定义纸张尺寸的支持问题

2.修复了打印机对象的打印份数的支持问题

3.修复了滑块条的选择长度不能到最大的问题


其它支持库的更新:
1.修改xml解析支持库,解决“xml树.取节点值文本()”返回的文本会失效的bug。

2.修改高级表格支持库,解决在鼠标按下和抬起之间收到时钟周期事件的情况下,无法收到“被单击”事件的bug。

3.修改扩展界面支持库三,解决单击卷帘菜单后导致日期框不能弹出下拉窗口的bug。

4.修改xp风格支持库,解决gdi资源泄露,以及在使用通用组件库六时组合框标题出现重影的bug。

5.修改扩展界面支持库一,解决树形框项目无法通过鼠标点击进入编辑状态的bug。

6.修改高级表格支持库,解决插入行/插入列在未指定行号/列号的情况下插入位置不正确的bug。

7.修改文本语音转换支持库,增加“机读文本.重新创建并初始化()”方法。

8.修改扩展界面支持库三,解决高级选择夹会导致所在窗口的收不到“首次激活”事件的bug,相应地修改了核心库和开发环境。

9.为所有支持库文件统一添加了版本信息。

10.修改应用接口支持库,增强“取快捷方式目标”命令功能,可以获取目标、参数、启始位置、图标、运行方式、快捷键、备注等信息。


aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|ziyuan80.com

GMT+8, 2025-8-14 21:15 , Processed in 0.090304 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表