冥界3大法王 发表于 2022-8-15 14:32

手动治愈IDR打开 HelpAndManual8 access violation(访问冲突)

本帖最后由 冥界3大法王 于 2022-8-15 15:48 编辑

三天前开始研究 HelpAndManual 8.4.4 Build 5960
Help+Manual v8, Floating License: $1198
研究了三天,终于整明白了。。。
因为程序是Delphi编写的,所以得派遣IDR完成最后的收尾工程了。
但是直接打开它时,就会:


出来个这 (翻译一下就是(访问冲突))
然而我们若是用x32dbg来加载IDR再去运行,则可以完成最终对Delphi程序的解析。。。(由此通过事实论证,我们得出一个道理:有   暗桩!)
但是!如果再去保存 IDR的数据结果时就会出现超出内存,溢出的错误了。

字符串搜索定位下

0066FC4F| 55                  | push ebp ==>这里是代码的头部
0066FC50| 8BEC                | mov ebp,esp                         |
0066FC52| 83C4 A8             | add esp,FFFFFFA8                  |
0066FC55| B8 FC976D00         | mov eax,idr.6D97FC                  |
0066FC5A| 53                  | push ebx                            |
0066FC5B| 56                  | push esi                            |
0066FC5C| 57                  | push edi                            |
0066FC5D| E8 825CFFFF         | call <idr.sub_6658E4>               |
0066FC62| FF75 08             | push dword ptr ss:         |
0066FC65| E8 4CFFFFFF         | call <idr.sub_66FBB6>               |
0066FC6A| 59                  | pop ecx                           |
0066FC6B| 25 FF000000         | and eax,FF                        |
0066FC70| 83F8 03             | cmp eax,3                           |
0066FC73| 7C 05               | jl idr.66FC7A                     |
0066FC75| 83F8 0F             | cmp eax,F                           |
0066FC78| 7E 10               | jle idr.66FC8A                      |
0066FC7A| 33C0                | xor eax,eax                         |
0066FC7C| 8B55 B0             | mov edx,dword ptr ss:       |
0066FC7F| 6467:8916 0000      | mov dword ptr fs:,edx            |
0066FC85| E9 B0030000         | jmp idr.67003A                      |
0066FC8A| 8B34C5 D4966D00   | mov esi,dword ptr ds: |
0066FC91| 83C0 FD             | add eax,FFFFFFFD                  |
0066FC94| 83F8 0B             | cmp eax,B                           | B:'\v'
0066FC97| 0F87 C5020000       | ja idr.66FF62                     |
0066FC9D| FF2485 A4FC6600   | jmp dword ptr ds:   |
0066FCA4| D4 FC               | aam FC                              |
0066FCA6| 66:0010             | add byte ptr ds:,dl            |
0066FCA9| FD                  | std                                 |
0066FCAA| 66:004CFD 66      | add byte ptr ss:,cl   |
0066FCAF| 0088 FD6600C4       | add byte ptr ds:,cl   |
0066FCB5| FD                  | std                                 |
0066FCB6| 66:0000             | add byte ptr ds:,al            |
0066FCB9| FE                  | ???                                 |
0066FCBA| 66:003CFE         | add byte ptr ds:,bh      |
0066FCBE| 66:0062 FF          | add byte ptr ds:,ah          |
0066FCC2| 66:0078 FE          | add byte ptr ds:,bh          |
0066FCC6| 66:00B4FE 6600F0FE| add byte ptr ds: |
0066FCCE| 66:0029             | add byte ptr ds:,ch            |
0066FCD1| FF66 00             | jmp dword ptr ds:            | :sub_401000
0066FCD4| 66:C745 C0 0800   | mov word ptr ss:,8          |
0066FCDA| BA 5CA16D00         | mov edx,idr.6DA15C                  | 6DA15C:"EDivByZero"
0066FCDF| 8D45 FC             | lea eax,dword ptr ss:      | :&"剂c"
0066FCE2| E8 DD370000         | call <idr.sub_6734C4>               |
0066FCE7| FF45 CC             | inc dword ptr ss:         |
0066FCEA| 8B08                | mov ecx,dword ptr ds:          |
0066FCEC| B2 01               | mov dl,1                            |
0066FCEE| A1 68C46400         | mov eax,dword ptr ds:       | 0064C468:"茨d"
0066FCF3| E8 24250000         | call <idr.sub_67221C>               |
0066FCF8| 8945 A8             | mov dword ptr ss:,eax       |
0066FCFB| FF4D CC             | dec dword ptr ss:         |
0066FCFE| 8D45 FC             | lea eax,dword ptr ss:      | :&"剂c"
0066FD01| BA 02000000         | mov edx,2                           |
0066FD06| E8 A5390000         | call <idr.sub_6736B0>               |
0066FD0B| E9 72020000         | jmp idr.66FF82                      |
0066FD10| 66:C745 C0 1400   | mov word ptr ss:,14         |
0066FD16| BA 67A16D00         | mov edx,idr.6DA167                  | 6DA167:"ERangeError"
0066FD1B| 8D45 F8             | lea eax,dword ptr ss:      |
0066FD1E| E8 A1370000         | call <idr.sub_6734C4>               |
0066FD23| FF45 CC             | inc dword ptr ss:         |
0066FD26| 8B08                | mov ecx,dword ptr ds:          |
0066FD28| B2 01               | mov dl,1                            |
0066FD2A| A1 C0C46400         | mov eax,dword ptr ds:       | 0064C4C0:&"\vERangeErrord興"
0066FD2F| E8 CC10EDFF         | call <idr.sub_540E00>               |
0066FD34| 8945 A8             | mov dword ptr ss:,eax       |
0066FD37| FF4D CC             | dec dword ptr ss:         |
0066FD3A| 8D45 F8             | lea eax,dword ptr ss:      |
0066FD3D| BA 02000000         | mov edx,2                           |
0066FD42| E8 69390000         | call <idr.sub_6736B0>               |
0066FD47| E9 36020000         | jmp idr.66FF82                      |
0066FD4C| 66:C745 C0 2000   | mov word ptr ss:,20         | 20:' '
0066FD52| BA 73A16D00         | mov edx,idr.6DA173                  | 6DA173:"EIntOverflow"
0066FD57| 8D45 F4             | lea eax,dword ptr ss:      |
0066FD5A| E8 65370000         | call <idr.sub_6734C4>               |
0066FD5F| FF45 CC             | inc dword ptr ss:         |
0066FD62| 8B08                | mov ecx,dword ptr ds:          |
0066FD64| B2 01               | mov dl,1                            |
0066FD66| A1 18C56400         | mov eax,dword ptr ds:       | 0064C518:&"\fEIntOverflow悙惱興"
0066FD6B| E8 58250000         | call <idr.sub_6722C8>               |
0066FD70| 8945 A8             | mov dword ptr ss:,eax       |
0066FD73| FF4D CC             | dec dword ptr ss:         |
0066FD76| 8D45 F4             | lea eax,dword ptr ss:      |
0066FD79| BA 02000000         | mov edx,2                           |
0066FD7E| E8 2D390000         | call <idr.sub_6736B0>               |
0066FD83| E9 FA010000         | jmp idr.66FF82                      |
0066FD88| 66:C745 C0 2C00   | mov word ptr ss:,2C         | 2C:','
0066FD8E| BA 80A16D00         | mov edx,idr.6DA180                  | 6DA180:&"1-0.dll"
0066FD93| 8D45 F0             | lea eax,dword ptr ss:       |
0066FD96| E8 29370000         | call <idr.sub_6734C4>               |
0066FD9B| FF45 CC             | inc dword ptr ss:         |
0066FD9E| 8B08                | mov ecx,dword ptr ds:          |
0066FDA0| B2 01               | mov dl,1                            |
0066FDA2| A1 CCC56400         | mov eax,dword ptr ds:       | 0064C5CC:&"\nEInvalidOp恜芼"
0066FDA7| E8 C8250000         | call <idr.sub_672374>               |
0066FDAC| 8945 A8             | mov dword ptr ss:,eax       |
0066FDAF| FF4D CC             | dec dword ptr ss:         |
0066FDB2| 8D45 F0             | lea eax,dword ptr ss:       |
0066FDB5| BA 02000000         | mov edx,2                           |
0066FDBA| E8 F1380000         | call <idr.sub_6736B0>               |
0066FDBF| E9 BE010000         | jmp idr.66FF82                      |
0066FDC4| 66:C745 C0 3800   | mov word ptr ss:,38         | 38:'8'
0066FDCA| BA 8BA16D00         | mov edx,idr.6DA18B                  | 6DA18B:"EZeroDivide"
0066FDCF| 8D45 EC             | lea eax,dword ptr ss:       |
0066FDD2| E8 ED360000         | call <idr.sub_6734C4>               |
0066FDD7| FF45 CC             | inc dword ptr ss:         |
0066FDDA| 8B08                | mov ecx,dword ptr ds:          |
0066FDDC| B2 01               | mov dl,1                            |
0066FDDE| A1 24C66400         | mov eax,dword ptr ds:[<sub_64C624>] | 0064C624:&"\vEZeroDivide绕d"
0066FDE3| E8 38260000         | call <idr.sub_672420>               |
0066FDE8| 8945 A8             | mov dword ptr ss:,eax       |
0066FDEB| FF4D CC             | dec dword ptr ss:         |
0066FDEE| 8D45 EC             | lea eax,dword ptr ss:       |
0066FDF1| BA 02000000         | mov edx,2                           |
0066FDF6| E8 B5380000         | call <idr.sub_6736B0>               |
0066FDFB| E9 82010000         | jmp idr.66FF82                      |
0066FE00| 66:C745 C0 4400   | mov word ptr ss:,44         | 44:'D'
0066FE06| BA 97A16D00         | mov edx,idr.6DA197                  | 6DA197:"EOverflow"
0066FE0B| 8D45 E8             | lea eax,dword ptr ss:       |
0066FE0E| E8 B1360000         | call <idr.sub_6734C4>               |
0066FE13| FF45 CC             | inc dword ptr ss:         |
0066FE16| 8B08                | mov ecx,dword ptr ds:          |
0066FE18| B2 01               | mov dl,1                            |
0066FE1A| A1 7CC66400         | mov eax,dword ptr ds:[<sub_64C67C>] | 0064C67C:&"\tEOverflow悙 莇"
0066FE1F| E8 A8260000         | call <idr.sub_6724CC>               |
0066FE24| 8945 A8             | mov dword ptr ss:,eax       |
0066FE27| FF4D CC             | dec dword ptr ss:         |
0066FE2A| 8D45 E8             | lea eax,dword ptr ss:       |
0066FE2D| BA 02000000         | mov edx,2                           |
0066FE32| E8 79380000         | call <idr.sub_6736B0>               |
0066FE37| E9 46010000         | jmp idr.66FF82                      |
0066FE3C| 66:C745 C0 5000   | mov word ptr ss:,50         | 50:'P'
0066FE42| BA A1A16D00         | mov edx,idr.6DA1A1                  | 6DA1A1:"EUnderflow"
0066FE47| 8D45 E4             | lea eax,dword ptr ss:       |
0066FE4A| E8 75360000         | call <idr.sub_6734C4>               |
0066FE4F| FF45 CC             | inc dword ptr ss:         |
0066FE52| 8B08                | mov ecx,dword ptr ds:          |
0066FE54| B2 01               | mov dl,1                            |
0066FE56| A1 D4C66400         | mov eax,dword ptr ds:[<sub_64C6D4>] | 0064C6D4:&"\nEUnderflow恱莇"
0066FE5B| E8 18270000         | call <idr.sub_672578>               |
0066FE60| 8945 A8             | mov dword ptr ss:,eax       |
0066FE63| FF4D CC             | dec dword ptr ss:         |
0066FE66| 8D45 E4             | lea eax,dword ptr ss:       |
0066FE69| BA 02000000         | mov edx,2                           |
0066FE6E| E8 3D380000         | call <idr.sub_6736B0>               |
0066FE73| E9 0A010000         | jmp idr.66FF82                      |
0066FE78| 66:C745 C0 5C00   | mov word ptr ss:,5C         | 5C:'\\'
0066FE7E| BA ACA16D00         | mov edx,idr.6DA1AC                  | ==>EAccessViolation==》我们当前在这里!
出头部引用点出来后,就会来到下面的位置处:

我们试着给上面的条件跳转改成强跳 !
0067129D| 74 29               | je idr.6712C8   ===>EB 29



然后,我们再去保存。。经过漫长的等待就会成功了。

vipcrack 发表于 2022-8-17 21:03

eeyou 发表于 2022-8-17 15:20
大佬,你的功夫每次都是让我膜拜,你真是能折腾。有能力。

法王大爷是全网最能折腾的。

冥界3大法王 发表于 2022-8-19 09:08

vipcrack 发表于 2022-8-17 21:03
法王大爷是全网最能折腾的。

二伯!我都成大爷了。。。{:301_1008:}
感觉快入土了。{:301_995:}

burning 发表于 2022-8-15 15:16

你怎么总是捣鼓Delphi,这玩意都过时了

canon75 发表于 2022-8-15 15:27

非常好,厉害我的啊

冥界3大法王 发表于 2022-8-15 15:40

我去,我的四五张配图到哪去了?
没存档,全完蛋了。。。{:301_1008:}

kkk782 发表于 2022-8-15 16:42

我没事也喜欢捣鼓点小玩意

Patches 发表于 2022-8-15 18:58

最近为了编辑chm   这是找了不少工具了哇{:301_1002:}

feob 发表于 2022-8-16 06:43

必须支持,感谢分享

sunsjw 发表于 2022-8-16 09:04

没有分析出问题的本质。

tenaiai 发表于 2022-8-16 11:27

学习一下,感谢分享

qiaojiuge 发表于 2022-8-16 15:59

谢谢大佬分享,正好想学习一下这方面的
页: [1] 2 3
查看完整版本: 手动治愈IDR打开 HelpAndManual8 access violation(访问冲突)