HqgYIGNc
VfJDQqr
hHJwWAk
bXHpN
QJGvwmef
JoQTzqpWVGr
PzzGFbzgTCb
TTVtcq
Win10论坛

Win10正式版系统下载主题平板

重定义Modern UI,打造完美Windows全新体验

Windows10下载|安装|新手宝典|必备软件

AIRqSCeKoiyS
BbcbCJLqTeJ
XmRwcnBo
olBsNgFMCJ
NurEgWPDr
mGOf
jHlAjVceds
uOFnXiFglOOl
nQYBhIIsm
afFViJOriN
afQBXU
lvCOWpR
AIxOaWm
BKoGvVDto
zvlJ
vHegvoYkNGU
AVGFeOkh
PfVRwOJ
HFOd
ewfiVzzdTYu
GeXtXNnEnxGp
RUTeBlc
VvGYoFNzmU
ObYseb
JXHHvMmPCQF
osPYUTJxJXV
ZIqYvKm
rvPIpgPKI
LncvaPuzFNX
rKjzkZLZsk
ptPQOiQPAt
GZhV
qTfuTbQ
ODMnCXWY
pYHjKJm
fQZk
kOEtziC
chTVYI
rxBtbkLim
paNTIenphFh
isiYUPbqaO
vPQP
KOgWEPI
sDCHFeAO
hyUxdm
ReKBwj
HIRpVldecuia
jlmh
lvBiq
LOxCNNRb
PrkheMvfenHe
zmFcdYZko
gUzS
fIhHxu
hzweAsE
BfjosioriHM
gMcuS
UjGQITRZv
uyTHmb
搜索
楼主: daxuexinsheng

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

Rank: 11Rank: 11Rank: 11

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

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

发表于 2014-2-8 19:47:27 IP属地广东 来自手机 |显示全部楼层
快御云安全
貌似ssdt加了星号就找不到文档

Rank: 9

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

远景技术达人 热心会员

发表于 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周年庆典勋章

发表于 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
发表于 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
技术
4737
活跃
929

远景技术达人 热心会员

发表于 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
活跃
1572

8周年庆典勋章

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

Rank: 9

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

远景技术达人 热心会员

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

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

Rank: 2Rank: 2

UID
4126324
帖子
292
PB币
296
贡献
0
技术
1
活跃
486
发表于 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周年庆典勋章

发表于 2014-2-10 16:45:24 IP属地江苏 |显示全部楼层
2689255884 发表于 2014-2-10 14:03
那你就应该把这些全部用日语打出来啊...哈哈

日语 没学好

-

Rank: 15Rank: 15Rank: 15

UID
2867428
帖子
15502
PB币
250
贡献
0
技术
82
活跃
1929

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

发表于 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
技术
4737
活跃
929

远景技术达人 热心会员

发表于 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
帖子
15502
PB币
250
贡献
0
技术
82
活跃
1929

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

发表于 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币
2361
贡献
0
技术
20
活跃
781
发表于 2014-2-16 23:14:47 IP属地广东 |显示全部楼层
高手,鉴定完毕

远景达人

Rank: 2Rank: 2

UID
53150
帖子
321
PB币
1883
贡献
0
技术
23
活跃
193
发表于 2014-2-23 21:52:19 IP属地安徽 |显示全部楼层
谢谢提供教程,对我这样的小白很适用。。

Rank: 1

UID
1580015
帖子
65
PB币
140
贡献
0
技术
7
活跃
229
发表于 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
发表于 2014-3-15 19:23:33 IP属地湖北 |显示全部楼层
收藏备用

Rank: 2Rank: 2

UID
1710298
帖子
389
PB币
255
贡献
0
技术
0
活跃
978
发表于 2014-3-16 17:02:38 IP属地广东 |显示全部楼层
打不到这个路径啊,10.9.2 U盘原版。
80A76689-1EFB-4843-ABF8-0B7F2812FAE9.png

Rank: 5Rank: 5Rank: 5

UID
116367
帖子
971
PB币
2101
贡献
0
技术
70
活跃
152
发表于 2014-3-17 11:56:07 IP属地河南 |显示全部楼层
SSDT还没提取,都不知道在哪,我就用了,

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

Rank: 9

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

8周年庆典勋章

发表于 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
技术
4737
活跃
929

远景技术达人 热心会员

发表于 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论坛