列表格式显示

热搜词:winrar    ftp   office   photoshop   输入法   ghost   win7  

09编程开发 - 分类

广告招商中......
联系方式!

编程工具 - 时间排序 更多...
    编程工具 - 点击排序 更多...
      编程工具 - 大小排序 更多...
        作者

         

        最近发布的软件 更多>>

        首页 >> 09编程开发>> 编程工具>>易语言4.14完美修改版 发布者:admin >> 本人发布的更多软件

        广告招商中...... 联系方式!

        易语言4.14完美修改版 

             
        软件厂家: 官方网站:
        大小: 语言:
        类型: 类别:
        更新时间: 运行环境:
        ;开始下载地址

        易语言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 5a010000 jmp e.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 ? ? ? ? ? ? ? ? ? ? ? ? ?; /tim erp roc = 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.修改应用接口支持库,增强“取快捷方式目标”命令功能,可以获取目标、参数、启始位置、图标、运行方式、快捷键、备注等信息。


        本页Html网址:/htmlsoft/57952.html

        本页aspx网址:/soft.aspx?id=57952&bianhao=20240101_015942_312929&kind1=09编程开发&kind2=编程工具

        上一篇:易语言6.1完美修改版

        下一篇:zxing core.jar

        增加   


        相关评论        新窗口打开查看评论