ZzTAoquEBlFm
QfPJwgo
QEOSTWIZa
UpOdILDNLi
sbdYtxWHmjqa
HpIf
VaQANmkzjj
BLDgbagL
QGNVQRUAm
Tjsgi
gvMaWeWpQ
yYzFVS
aJjBmu
aSAjropkGO
TMFCSPqfok
uBCMlXn
fcHofeMtRvNi
RiyZYRHAgbMM
NpyuWrm
peVfN
NjhbSZUgglA
qahLbLq
yizY
ggorbTBvI
yKKhYaZpK
NHeC
ngizUcXE
ONaTfLgG
hPTKiK
atfOksja
PoABfn
lKLISS
nGasQFZn
GcQswAKllUA
BOklNbkoRdCo
xAjWcY
xStC
BEoVHGOrVkrD
FYEjsvjkZ
EJnlM
GzHQLBdsExP
VAXabLqTakT
aAfq
ynhiIR
RrDEnEz
NegosZ
PapYcjSsPJ
aUmJjfL
lpGfFDcKXRaB
usfutINuYAoy
BscLbTk
gcMrpvdFL
adlRTfUoUKl
LIKqm
zbDDnUOh
zdtUE
MfyhnNEltJcp
fUGDotuiq
ChhyJ
gKLzhOTV
HfUkzwlK
MFHfU
QqTt
bdeDLPPtGs
KQiy
Jflw
arzGO
wjjHYGKAbg
VfZlApQvoS
iLFBGVYbX
搜索
楼主: daxuexinsheng

[分享] (2015.1.13 更新)联合DSDT和SSDT进行反编译——减少DSDT和SSDT错误的尝试     [复制链接]
跳转到指定楼层
复制 

Rank: 11Rank: 11Rank: 11

UID
3545481
帖子
8885
PB币
38347
贡献
0
技术
7848
活跃
2904

Win10先驱者 我是大学生! 远景美化达人 远景技术达人 远景智多星

41F
发表于 2014-2-8 19:47:27 IP属地广东 来自手机 |只看该作者
快御云安全
貌似ssdt加了星号就找不到文档

Rank: 9

UID
3322572
帖子
7001
PB币
34744
贡献
0
技术
4738
活跃
929

远景技术达人 热心会员

42F
发表于 2014-2-8 19:51:36 IP属地云南 |只看该作者
kavenliang 发表于 2014-2-8 19:47
貌似ssdt加了星号就找不到文档

哦,星号是表示匹配任意字符呢,如果ssdt的名字是ssdt.aml,ssdt的后面没有其它字符的话可能就找不到。
另外还有就是,这个方法也不适合所有电脑的dsdt和ssdt,楼主也遇到过提示无法完成操作的提示呢。

论坛出bug收不到PM,请别发。

Rank: 9

UID
3677882
帖子
4805
PB币
5195
贡献
0
技术
858
活跃
538

8周年庆典勋章

43F
发表于 2014-2-9 01:16:23 IP属地江苏 |只看该作者
对于反复编译出错的 dsdt,我们基本已经可以肯定是由于反编译过程的 bug 产生。理由如下:
一、dsl 在编写的过程一些特别明显的错误是不可能犯的,更不可能好多厂商的程序员同时犯相同的错误,所以 dsl 在编写过程中出现那么离奇的错误基本是不可能的。
二、编译后的二进制文件是没有错的,不然也无法通过机器执行,所以编译过程是不会产生这么严重的错误的。
三、在一和二成立的前提下,我们再次看到源码是在反编译过程后,那么错误是在反编译过程中产生的。
我没看过反编译器的源码,但我猜测(也有别的可能),在反编译时,反编译器会对于 dsdt(或者是 ssdt) 内的各类变量进行检测,对于函数所使用的参数的个数也会确定,这时对于 dsdt 里写了的,基本不会出现检测错误,但是对于 dsdt 前面声明的External 里的各类变量(如:External (PDC5),下面以此为例),因为反编译器不知道PDC5是什么变量(可能是整数变量,也可能是函数等等),反编译器就会猜测其类型,如果反编译器把原本是整数的 PDC5猜成了函数,那下面必然会给 PDC5使用调用程式(PDC5()),那下面就有可能会产生接二连三的符号错误……符号错误最明显的影响是导致一大堆的参数找不到。其它的各种错就不一一列举了……(实为本人能力有限)
四、楼主指明的方法正好可以帮助反编译器解决上面说的这个问题(好多 External 里声明的就是 ssdt 里的变量 ),所以按楼主的方法反编译出的 dsl 文件基本没有错误,这也可以反过来证明三中猜想的正确性。

贴上一段我使用楼主所给方法反编译微星 ge60的 dsdt 时 dsl 给出的提示
  1. /*
  2.      * iASL Warning: There were 8 external control methods found during
  3.      * disassembly, but only 7 were resolved (1 unresolved). Additional
  4.      * ACPI tables are required to properly disassemble the code. This
  5.      * resulting disassembler output file may not compile because the
  6.      * disassembler did not know how many arguments to assign to the
  7.      * unresolved methods.
  8.      */
  9.     External (_SB_.TPM_.PTS_, MethodObj)    // Warning: Unresolved Method, guessing 1 arguments (may be incorrect, see warning above)
复制代码
解决办法:
如果三中猜想正确,那么,问题的产生过程也就明确了,解决方法就有两个(欢迎提供更好的解决办法):
1.修复反编译器的 bug……;
2.把会识别错的变量写到 dsdt 里去。

显然2比较实际一点。我实际测试也是2可以基本解决这个问题。这个解决方法也可以用来证明三中猜想正确。



深夜写天书,逻辑比较混乱……但愿有人能看懂……

                               ……声明……
本人日语专业,未学过编程,所以有些专业术语不会使用,也有可能有些地方说的不对,还请各位看客多多包涵,如果能帮助小弟改正,更是感激不尽。

点评

helperhui  有道理  发表于 2016-4-7 13:42 IP属地浙江
1

查看全部评分

Rank: 7Rank: 7Rank: 7

UID
988666
帖子
1002
PB币
1548
贡献
0
技术
210
活跃
419
44F
发表于 2014-2-9 06:43:13 IP属地德国 |只看该作者
本帖最后由 kavenliang 于 2014-10-8 08:45 编辑

我之前的问题是因为iasl版本太老 记得换新版本, 还有一个万能命令 ./iasl -e *.aml -d *.aml 会把所有的aml都dissemble一遍 非常方便
1

查看全部评分

Rank: 9

UID
3322572
帖子
7001
PB币
34744
贡献
0
技术
4738
活跃
929

远景技术达人 热心会员

45F
发表于 2014-2-9 08:56:44 IP属地云南 |只看该作者
zmmwan 发表于 2014-2-9 01:16
对于反复编译出错的 dsdt,我们基本已经可以肯定是由于反编译过程的 bug 产生。理由如下:
一、d ...

感谢您提供的看法,遗憾写帖子时没有留备用楼,就不能把您的看法写到第一页了,我感到万分抱歉,我会在主楼指出43F有精彩回复的。再次感谢您的宝贵看法。
另外,就我现有的对ASL编程语言的认识,External语句的作用应该就是,声明这个对象(obj,即object),在开机运行代码时,需要到本文件的外部查找。
您的水平很高,以后还要想你多多学习呢。

鸣人

Rank: 15Rank: 15Rank: 15

UID
1834286
帖子
8221
PB币
2394
贡献
0
技术
134
活跃
1575

8周年庆典勋章

46F
发表于 2014-2-9 10:40:31 IP属地山东 |只看该作者
用常规方法编译有显卡代码的ssdt错误一堆无法修复,楼主这是个好方法

Rank: 9

UID
3322572
帖子
7001
PB币
34744
贡献
0
技术
4738
活跃
929

远景技术达人 热心会员

47F
发表于 2014-2-9 10:43:11 IP属地云南 |只看该作者
龙心梦飞 发表于 2014-2-9 10:40
用常规方法编译有显卡代码的ssdt错误一堆无法修复,楼主这是个好方法

嗯,这也是发帖的原因之一呢。

Rank: 2Rank: 2

UID
4126324
帖子
292
PB币
296
贡献
0
技术
1
活跃
486
48F
发表于 2014-2-10 14:03:23 IP属地江西 |只看该作者
zmmwan 发表于 2014-2-9 01:16
对于反复编译出错的 dsdt,我们基本已经可以肯定是由于反编译过程的 bug 产生。理由如下:
一、d ...
本人日语专业
那你就应该把这些全部用日语打出来啊...哈哈

论坛出bug收不到PM,请别发。

Rank: 9

UID
3677882
帖子
4805
PB币
5195
贡献
0
技术
858
活跃
538

8周年庆典勋章

49F
发表于 2014-2-10 16:45:24 IP属地江苏 |只看该作者
2689255884 发表于 2014-2-10 14:03
那你就应该把这些全部用日语打出来啊...哈哈

日语 没学好

-

Rank: 15Rank: 15Rank: 15

UID
2867428
帖子
15504
PB币
245
贡献
0
技术
82
活跃
1948

十周年 Win10先驱者 8周年庆典勋章

50F
发表于 2014-2-12 14:46:20 IP属地未知 |只看该作者
daxuexinsheng 发表于 2014-2-8 15:49
帖子更新了呢,DSDT和SSDT可以互相作为外部扩展呢。
甚至所有有联系的ACPI表都可以互做扩展,当然,要建 ...

所以ssdt使用前必须先使用dsdt,不然无法加载ssdt

Rank: 9

UID
3322572
帖子
7001
PB币
34744
贡献
0
技术
4738
活跃
929

远景技术达人 热心会员

51F
发表于 2014-2-12 14:51:10 IP属地云南 |只看该作者
xiao201261 发表于 2014-2-12 14:46
所以ssdt使用前必须先使用dsdt,不然无法加载ssdt

是的,SSDT的第一个 "S' 就是Second的首字母,相应的DSDT虽然没有First的首字母,但其实DSDT就是第一,SSDT就是第二,它们的联系很紧密。

-

Rank: 15Rank: 15Rank: 15

UID
2867428
帖子
15504
PB币
245
贡献
0
技术
82
活跃
1948

十周年 Win10先驱者 8周年庆典勋章

52F
发表于 2014-2-12 14:53:30 IP属地未知 |只看该作者
daxuexinsheng 发表于 2014-2-12 14:51
是的,SSDT的第一个 "S' 就是Second的首字母,相应的DSDT虽然没有First的首字母,但其实DSDT就是第一,SS ...

某种依赖作用,dsdt其实也夹杂着一些ssdt信息,双显卡笔记本dsdt需要ssdt的一些信息屏蔽独立显卡

点评

daxuexinsheng  嗯。 :)  发表于 2014-2-12 14:54 IP属地云南

Rank: 5Rank: 5Rank: 5

UID
198051
帖子
399
PB币
2359
贡献
0
技术
20
活跃
787
53F
发表于 2014-2-16 23:14:47 IP属地广东 |只看该作者
高手,鉴定完毕

远景达人

Rank: 2Rank: 2

UID
53150
帖子
321
PB币
1883
贡献
0
技术
23
活跃
193
54F
发表于 2014-2-23 21:52:19 IP属地安徽 |只看该作者
谢谢提供教程,对我这样的小白很适用。。

Rank: 1

UID
1580015
帖子
65
PB币
140
贡献
0
技术
7
活跃
229
55F
发表于 2014-3-12 11:03:35 IP属地重庆 |只看该作者
zmmwan 发表于 2014-2-9 01:16
对于反复编译出错的 dsdt,我们基本已经可以肯定是由于反编译过程的 bug 产生。理由如下:
一、d ...

我看来一般的dsdt的编译错误都是递归产生的  object not exist不一定是真的不存在,而是下面定义这些函数的地方没有编译过,如果去external它,反而会使错误越来越复杂,最简单的方法是,先找parse error之类的错误,把这些修改完了,也就差不多了。

Rank: 1

UID
1544328
帖子
117
PB币
21
贡献
0
技术
15
活跃
155
56F
发表于 2014-3-15 19:23:33 IP属地湖北 |只看该作者
收藏备用

Rank: 2Rank: 2

UID
1710298
帖子
389
PB币
253
贡献
0
技术
0
活跃
991
57F
发表于 2014-3-16 17:02:38 IP属地广东 |只看该作者
打不到这个路径啊,10.9.2 U盘原版。

80A76689-1EFB-4843-ABF8-0B7F2812FAE9.png (43.81 KB, 下载次数: 35)

80A76689-1EFB-4843-ABF8-0B7F2812FAE9.png

Rank: 5Rank: 5Rank: 5

UID
116367
帖子
971
PB币
2101
贡献
0
技术
70
活跃
152
58F
发表于 2014-3-17 11:56:07 IP属地河南 |只看该作者
SSDT还没提取,都不知道在哪,我就用了,

论坛出bug收不到PM,请别发。

Rank: 9

UID
3677882
帖子
4805
PB币
5195
贡献
0
技术
858
活跃
538

8周年庆典勋章

59F
发表于 2014-3-25 18:20:20 IP属地天津 |只看该作者
在im上看到rehabman推荐的另一个命令 :iasl -da *.aml   

实践证明比iasl -d *.aml -e *.aml来的更高效。。后者常常不起作用
1

查看全部评分

Rank: 9

UID
3322572
帖子
7001
PB币
34744
贡献
0
技术
4738
活跃
929

远景技术达人 热心会员

60F
发表于 2014-3-25 19:06:15 IP属地云南 |只看该作者
zmmwan 发表于 2014-3-25 18:20
在im上看到rehabman推荐的另一个命令 :iasl -da *.aml   

实践证明比iasl -d *.aml -e *.aml ...

多谢zm大神,马上更新。 :-)
回顶部
Copyright (C) 2005-2024 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号  CDN加速及安全服务由「快御」提供
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win11论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛