wine qq 2012 for linux Ubuntu 64位兼容

wine qq 2012 for linux Ubuntu 64位兼容

http://www.longene.org/forum/viewtopic.php?f=6&t=4700

+-----------------------------------------------------------------------+
| wine qq 2012 for linux Ubuntu 64位兼容 
+-----------------------------------------------------------------------+
| 作者:LongeneTeam 
| 网名:smile,timeboy,wolfstar 
| QQ群:116095874 【Longene爱好者群】 
| 新浪微博:http://www.weibo.com/longene
| Email:zhangcheng@insigma.com.cn 
+-----------------------------------------------------------------------+
| 文章版权归原作者所有。 
| 大家可以自由转载这篇文章,但原版权信息必须保留。 
| 未经许可不得用于商业用途,任何个人、媒体、其他 
| 网站不得私自抄袭。 如需用于商业用途,请务必与原 
| 作者联系,若因未取得授权而收起的版权争议,由侵 
| 权者自行负责。 
+-----------------------------------------------------------------------+

本文链接:http://www.longene.org/forum/viewtopic.php?f=6&t=4700

目录:
1. wine-qq2012最新下载
2. 安装说明
3. 常见问题
4. 更新日志
5. 历史版本下载
6. 运行截图

+-----------------------------------------------------------------------+
wine qq2012 for linux 最新下载 
+-----------------------------------------------------------------------+

http://www.longene.org/download/wine-qq2012-for-linux_20120302_ByLongeneTeam.deb
MD5:9a34af7f4d916ba630c1572b066a74d0
SHA1:d71af4d699db3e8433838b85d39a9e26bea946c0

网盘链接:
wine-qq2012-for-linux_20120302_ByLongeneTeam.1:http://dl.dbank.com/c0j13ihygp
wine-qq2012-for-linux_20120302_ByLongeneTeam.2:http://dl.dbank.com/c0uewkfmjd
下好之后这样合并: cat 包1 包2 >wine-qq2012-for-linux_20120302_ByLongeneTeam.deb

下载后请根据自己的机器类型,按照下面的32位或64位安装说明安装

新版本更新说明:
1.qq版本升级到官方最新qq2012Beta1
2.点击密码框不会崩溃
3.不会自动离线
4.支持全局热键(比如:Ctrl+Alt+A截图)
5.语音视频接受正常,本地视频无法使用
6.文件传输大小正常

已知问题:
1.窗口放到桌面边缘无法自动隐藏。
2.如果qq2012使用时发现没有声音或者遇到接收消息时qq僵死的情况,请手动安装更高版本的alsa-lib.(见常见问题一)
3.使用linux的显示桌面,或者使用Ctrl+Alt+z快捷键后切换了桌面的话,可能会导致qq面板无法唤出。
这时可以右键点击任务栏qq图标,选择锁定qq,就可以唤出主面板了。
4.关闭qq窗口可能会有残影,不过不影响使用。

a.jpg



b.jpg



c.jpg



+-----------------------------------------------------------------------+
安装说明:
+-----------------------------------------------------------------------+
32位系统安装说明:
1.如果之前安装过旧版本需要先卸载(通过dpkg -l | grep qq查看)。
2.安装: sudo dpkg -i 软件名.deb
卸载: 先dpkg -l | grep qq 找到名字,然后执行:sudo dpkg -r qq-for-wine 或 sudo dpkg -P qq-for-wine
3.安装后qq在桌面上方的Applications/Internet/qq2012,点击运行即可。也可以自己拖到桌面双击运行 
或者 到/opt/qq2012/wineapp/qq目录下运行qq.sh
4.安装后在你的 $HOME下会生成.qq2012目录,这是qq程序的目录。/opt目录下有个qq2012目录这是wine的工作目录。
5.安装后第一次运行qq登录的时候可能有点慢这是正常的,qq要生成自己的一些用户信息

64位系统安装说明:
我们本想制作64位的deb安装包的,但是发现QQ并没有发行64位的版本,所以没法制作。
但经测试发现,在64位系统上安装ia32-libs后(Ubuntu执行:sudo apt-get install ia32-libs),
安装上面的32位包可以正常运行起来。


+-----------------------------------------------------------------------+
常见问题
+-----------------------------------------------------------------------+
一.如果qq使用时发现没有声音或者遇到接收消息时qq僵死的情况,按照下面安装高版本的slsa。
由于wine-1.4-rc2需要高版本的alsa-lib(>=1.0.22)版本,而Ubuntu自带的alsa-lib库版本太低,导致使用音频时可能会出现问题。
安装步骤:
1. 下载源码:
你可以去官网ftp://ftp.alsa-project.org/pub/lib/ 下载源码,下载高于1.0.22版本的alsa-lib。
注意:我们只测试过alsa-lib-1.0.24.1的版本,能正常运行(ftp://ftp.alsa-project.org/pub/lib/alsa-lib-1.0.24.1.tar.bz2)。 其他版本未作测试。
2.然后解压
tar -jxvf alsa-lib-1.0.24.1.tar.bz2
3.最后编译安装:
cd alsa-lib-1.0.24.1
./configure
make && make install

如果觉得麻烦,那可以试试我们已经编译好的alsa-lib。
下载:http://www.longene.org/download/alsa-lib-1.0.24.1.tar.bz2
安装方法很简单:
解压(tar -jxvf alsa-lib-1.0.24.1.tar.bz2),然后cd到解压开的文件夹,然后运行命令make install
由于桌面环境不一样,我们编译好的alsa-lib不一定所有机器都能用,如果不行请参考上面的方法去官网下载源码手动安装。

二.如果菜单无法前台显示,去掉qq设置 '始终保持在其他窗口前端' 前面的勾。

三.如果QQ无法使用ibus中文输入法,按修改下面文件后重启。
1).在/etc/profile文件最后添加
XMODIFIERS="@im=ibus"
XIM="ibus"
GTK_IM_MODULE="xim"
QT_IM_MODULE="xim"
ibus-daemon -d -x 
2).把/etc/X11/xinit/xinput.d/ibus文件中的 XIM_ARGS="--xim" 改成 XIM_ARGS="-d -x"

+-----------------------------------------------------------------------+
更新日志
+-----------------------------------------------------------------------+
2012-03-02 LATEST:
1.qq版本升级到官方最新qq2012Beta1
2.点击密码框不会崩溃
3.不会自动离线
4.支持全局热键(比如:Ctrl+Alt+A截图)
5.语音视频接受正常,本地视频无法使用
6.文件传输大小正常

已知问题:
1.窗口放到桌面边缘无法自动隐藏。
2.如果qq2012使用时发现没有声音或者遇到接收消息时qq僵死的情况,请手动安装更高版本的alsa-lib.(见常见问题一)
3.使用linux的显示桌面,或者使用Ctrl+Alt+z快捷键后切换了桌面的话,可能会导致qq面板无法唤出。
这时可以右键点击任务栏qq图标,选择锁定qq,就可以唤出主面板了。
4.关闭qq窗口可能会有残影,不过不影响使用。

2012-02-20:
1.qq版本升级到qq2011(官方最新qq2011正式版2012-01-31版),wine版本升级到wine-1.4-rc2
2.不会自动离线
3.支持全局热键(比如:Ctrl+Alt+A截图)
4.支持语音视频功能
5.文件传输大小正常(上一版本只可以传400K)
6.输入密码时,点击密码框不会崩溃

已知问题:
1.窗口放到桌面边缘无法自动隐藏。
2.如果qq2011使用时发现没有声音或者遇到接收消息时qq僵死的情况,请手动安装更高版本的alsa-lib。
(见常见问题一)

3.使用Ctrl+Alt+z快捷键之后,如果切换了桌面的话,可能会导致qq面板没法显示。这时可以右键点击任务栏qq
图标,选择锁定qq,就可以唤出主面板了。
4.关闭qq窗口可能会有残影,不过不影响使用。
5.无法更改外观,要换皮肤可以通过qq设置->换肤

2012-02-01更新:
1.消息记录基本完美:除了qq自带表情无法显示,其他均正常。
2.wine的工作目录改放在/opt目录下,这样就和已安装的其他版本的wine之间没有干扰。

待解决:
.ibus输入法切换时可能会崩溃,用fcitx输入法正常
.qq窗口放到桌面边缘无法自动隐藏
.qq安装更新出错
.音视频聊天会崩溃

2012-01-13更新:
1.解决qq在线状态自动变成离开状态
2.解决qq无法使用快捷键,现在可以使用qq快捷键了(像 Ctrl+Alt+A截图)

待解决:
.点击qq消息记录窗口时好时坏
.qq安装更新出错
.qq窗口放到桌面边缘无法自动隐藏

2011-05-10更新:
1.解决聊天窗口中对方中文名称是“口口口”问题
2.解决qq状态下拉菜单,主菜单无法前台显示
3.解决双击自己的头像,弹出窗口会崩溃的问题 
4.修改脚本添加qq到 Applications/Internet/Tencent QQ[感谢Ivenvd网友的脚本]

待解决:
.点击qq消息记录窗口有时会崩溃
.在线状态自动变成离开状态
.无法使用快捷键
.qq安装更新出错

2011-04-25更新:
1.解决qq下拉菜单窗口无法显示
2.解决qq右键菜单窗口无法显示
3.解决qq空间微博点击没有反应,无法打开网页
4.解决qq退出出错

待解决:
1.qq状态下拉菜单,主菜单无法前台显示
2.qq消息记录窗口无法正常显示
3.qq连接视频后,出现不稳定
4.qq安装更新文件出错

2011-04-14更新:
1.解决qq截图黑屏问题
2.不需要备份$HOME目录下的已有的.wine,而是有与之相关的.qq
3.解决无法创建快捷方式到桌面

待解决:
1.qq下拉菜单窗口无法显示
2.qq右键菜单窗口无法显示
3.qq空间微博点击没有反应,无法打开网页
4.qq连接视频后,出现不稳定
5.qq安装更新文件出错
6.qq退出出错


+-----------------------------------------------------------------------+
历史版本下载:
+-----------------------------------------------------------------------+

http://www.longene.org/download/qq2011-for-wine_20120220.deb
MD5:7a085b561ddb226f478819bfcab4ba92
SHA1:71163c685f646a2e701e2528cd0fdef6e471bd06

网盘链接:
qq-for-wine_20120220.deb.1 :http://dl.dbank.com/c08xftalaa
qq-for-wine_20120220.deb.2 :http://dl.dbank.com/c0vnbhdiac
下好之后这样合并: cat qq-for-wine_20120220.deb.1 qq-for-wine_20120220.deb.2 >qq2011-for-wine_20120220.deb

http://www.longene.org/download/qq-for-wine_20120201.deb
MD5:4d047572aad797bbf6bb1ff95f909780
SHA1:0d068b5f9674d430c93f4fc6fb3cba1b3f56aea9
网盘下载:http://dl.dbank.com/c0jm5ormte

http://www.longene.org/download/qq-for-wine_20120113.deb
MD5:8770de8e7ab8a3473e9dc40401e15669
SHA1:18be666fa6913cc99464799709d95abbda4b99cd
网盘下载地址:http://dl.dbank.com/c0xl1mfrv9

http://www.longene.org/download/qq-for-wine_20110510.deb
MD5:fd71ce314ba480b6b2144bf16af5b6d1
SHA1:59677588625fe72df1332e61ee08b72f80668c59

http://www.longene.org/download/qq-for-wine_20110425.deb
MD5:23a4e14d70d7808a3766a87b6399eb32
SHA1:380a1b477e8cf3c360ff666e7145e6400e3e3700

http://www.longene.org/download/qq-for-wine_20110414.deb
MD5:5078b1ce30df3c03d0d5e6517289f5c9
SHA1:536a18169d7b846ef2598b74e6671e04bd5436b3

+-----------------------------------------------------------------------+
下面是运行效果
+-----------------------------------------------------------------------+

Screenshot_20110510.png



Screenshot_20110425.png
 
 
 
 
 
Longene是一个自由、开源的操作系统项目,目的是要把Linux的内核扩充成一个既支持Linux应用、也支持Windows应用,既支持 Linux设备 驱动、也支持Windows设备驱动的兼容内核;使用户可以直接在Linux操作系统上高效运行Windows应用。

Longene-0.3.2已于2011.6.8发布,点击这里进入下载页。此次发布的版本包括3部分代码:
Linux内核补丁(Linux-2.6.34)、Longene模块代码、Wine For Longene(wine-1.0-longene)。
此外,你还需要linux-2.6.34的代码包,可以在我们的“下载中心”下载,也可在 Linux kerenl官方网站下载:http://www.kernel.org

Longene-0.3.2 版本发布号说明:
首先,Longene-0.3.2是一个非稳定版(unstable).
非稳定版是没有经过详尽测试的版本,是到达下一个稳定版的中间产物, 但是也是有很多改进和新特性的。非稳定版不保证不会引入新的bug,而是主要以解决bug为主,这样是避免从一个稳定版到下一个稳定版长时间没有更新,加入unstable版本后,大家也可以更多的体验Longene的新改进和新变化,见证Longene的一步一步的成长。
0 . 3 . 2
一号位 二号位 三号位
在第一个整数位版本号之前(e.t 1.0.0),三号位为0的版本为稳定版本, 非0就代表非稳定版,以后的longene版本号就按照这个原则发布。


Longene-0.3.2主要做了以下改进:
1. 支持wineconsole。Windows平台的console程序,像cmd.exe可以像这样运行了:wineconsole cmd.exe。
2. 改进了进程的创建方式,使得windows的native-app 和 wine的一些buitin-app可以互相创建了.
你可以起动一个cmd.exe控制台然后在cmd窗口启动wine自带的notepad.exe.so ,反过来,cmd.exe.so 的程序也可以启动windows的notepad.exe程序。


Longene-0.3.2的安装和0.3.1一样,详细请点击这里查看

Longene-0.3.2已在Ubuntu9.10 10.04 10.10 fedora13下测试通过,如你的发行版不再上述列表中,请将Longene的运行情况告诉我们,我们将万分感谢!

这里我们也真诚的欢迎大家加入我们的爱好者和开发者qq群
爱好者qq群群号(非常欢迎linux新手):116095874
开发者qq群群号(欢迎老鸟加入):50764769

注:想要参加开发者qq群的朋友,请先点击这里参加开发,然后申请加入
 
 
从最初毛德操老师的一个构想,到现在不断完善的代码,3年多来,Linux兼容内核项目已经有了很大的发展。

项目组成员也经历了各种挑战,不断成长和进步。我们也希望能有更多优秀的人才能加入我们的团队,和我们一起分享开发过程中的喜悦,收获成长道路上的经验。

进入2009年,项目的规模日益扩大,我们更需要新鲜的血液补充进专职的开发组,希望可以从这个社区吸收到更多志同道合的朋友,我们希望您:
1、对Linux兼容内核项目有兴趣
2、了解并喜爱Linux
3、对技术学习有强烈的渴求

不论学历,不论学校,需要你有一颗好奇的“心”。

如果您是学生,您可以来实习!(我们在浙江杭州)
如果您是参加工作的,希望你可以发简历给我们!

请发送邮件至linux@insigma.com.cn
Longene是一个自由、开源的操作系统项目,目的是要把Linux的内核扩充成一个既支持Linux应用、也支持Windows应用,既支持Linux设备 驱动、也支持Windows设备驱动的兼容内核;使用户可以直接在Linux操作系统上高效运行Windows应用。

Longene-0.3.1已于2011.2.28发布,点击这里进入下载页。此次发布的版本包括3部分代码:Linux内核补丁(Linux-2.6.34)、Longene模块代码、Wine For Longene(wine-1.0-longene)。此外,你还需要linux-2.6.34的代码包,可以在我们的“下载中心”下载,也可在Linux kerenl官方网站下载:
http://www.kernel.org

Longene-0.3.1主要增加了支持非root用户使用和对应用程序中文路径的支持
1.非root用户是指用户自己创建的帐号(例如longene)也可以通过兼容内核来运行图形界面的程序,所以.wine的路径相对root更改为/home/用户名/.wine
2.中文路径支持是指用户可以创建用中文名字命名的文件夹来来启动应用程序,比如.wine/兼容内核/app.exe,进入.wine/兼容内核/ 目录 执行./app.exe命令便可以启动程序,这在原来兼容内核版本中是不支持的,这也使得相对于原来的版本,用户在使用应用程序的时候更加方便
虽然这些改进只是一小步,但这是兼容内核在时隔一年后的新的开始,新的征程

Longene-0.3.1详细安装说明请点击这里查看

Longene-0.3.1已在Ubuntu9.10 10.04 10.10 fedora13下测试通过,如你的发行版不再上述列表中,请将Longene的运行情况告诉我们,我们将万分感谢!

这里我们也真诚的欢迎大家加入我们的爱好者和开发者qq群
爱好者qq群群号(非常欢迎linux新手):116095874
开发者qq群群号(欢迎老鸟加入):50764769

注:想要参加开发者qq群的朋友,请先点击这里参加开发,然后申请加入
 
 

http://www.longene.org/forum/viewtopic.php?f=6&t=4700

龙井做的qq2012挺方便,但是arch下一登录就崩溃,是少库了,解决方法如下:

先确保已经安装wine,这样,你差的lib32库不是太多

1.安装

用解压器打开deb包, 给里面的data.tar.gz中的qq2012文件夹拖到opt里面

然后运行

$/opt/qq2012/wineapp/qq/install.sh

这个时候会给qq程序拷贝到~/.qq2012里面,另外他这个wineqq用的是自己编译的wine-1.4-rc2,主程序wine在/opt/qq2012/bin里面

 

2.手动运行,观察错误:

$env WINEPREFIX=~/.qq2012 /opt/qq2012/bin/wine   ~/.qq2012/drive_c/Program\ Files/Tencent/QQ/Bin/QQ.exe

env如果不用的话,wine会加载~/.wine而不是~/.qq2012了

启动后报错少了两个包

1.lib32-lcms

2.lib32-alsa-lib

安装后 就可以正常使用了

 

http://forum.ubuntu.org.cn/viewtopic.php?t=282092

一、
www.longene.org

Longene 是一个源自中国、自由、开源的操作系统项目,目的是要把Linux的内核扩充成一个既支持Linux应用、也支持Windows应用,既支持Linux设备驱动、也支持Windows设备驱动的兼容内核;使用户可以直接在Linux操作系统上高效运行Windows应用。

Longene与 Wine
Longene和Wine的目标相同,手段有差异,简而言之,Wine的策略是“核内差异核外补”,Longene的策略是“核内差异核内补”(具体参见项目白皮书)。相比Wine,Longene的重点是提高软件运行的性能和效率,包括解决内核驱动兼容的问题。Wine在应用层实现的 Dll将一直是Longene项目的基石,同为开源软件,两者将是“携手发展,共同促进”的关系。

Longene-0.3.0是一个具有里程碑意义的版本,Longene彻底摆脱了wineserver进程的依赖,在内核实现了wine的调用申请,现在对wine的依赖只是dll和部分 program,因此我们不再提供针对Wine的补丁,而是提供一份Wine For Longene的代码。Longene-0.3.0包括3部分代码:Linux内核补丁(Linux-2.6.30)、Longene模块代码、Wine For Longene(wine-1.0-longene)。

Longene-0.3.0的运行效率与Wine相比有很大地提高(这正是Longene存在的意义之一),具体效率测试请见官方网站。

Longene-0.3.0已在Ret Hat Enterprise 5.1, Ubuntu 9.04, Ubuntu10.04, Fedora 12, Redflag 6, Magic Linux 2.5-1测试通过,如你的发行版不再上述列表中,请将Longene的运行情况告诉我们,我们将十分感谢!

Longene-0.3.0 的发布,可以从数据上验证了“核内差异核内补”思想的正确性,也是对项目开发初期某些对项目有质疑的爱好者最好的解释,也是对这些年来坚持参与开发的人员,最欣慰的成果。虽然Longene-0.3.0在性能上表现优异,但是我们还是要看到在安装、稳定性、兼容度等方面存在的问题,这些还需要我们持之以恒地加以优化和改进。我们欢迎广大的操作系统爱好者关注、参与到项目开发中来,真正把这个chinese base的开源项目发展壮大,成为国际性的项目,为Linux的发展添砖加瓦。

二、
React Operating System

http://www.reactos.org

ReactOS® 是一个基于Windows® XP/2003设计的自由的,现代的 操作系统。重新写了所有的代码,它的目标是从硬件到应用程序遵循微软Windows®架构。这不是一个基于 Linux 的系统,而且不含任何 unix 架构。
ReactOS 项目的主要目标是提供一个与 Windows 执行环境兼容的操作系统。它能让你的 Windows 应用程序和驱动程序如同在 Windows 上一般运行。而且还是使用了 Windows 操作系统的外观,所以熟悉 Windows® 的人们使用 ReactOS 将驾轻就熟。ReactOS 的终极目标是能使你安装 ReactOS 来替代 Windows® 而感觉不到最终端用户体验的变化。


Longene 感觉还是访ReactOS

 

http://www.longene.org/forum/viewtopic.php?f=6&t=4709

原创文章,未经许可不得用于商业用途,任何个人、媒体、其他网站不得私自抄袭,网络媒体转载请注明出处,增加原文链接,否则属于侵权行为。
如有任何问题,请留言(Longene爱好者群50764769)或者发邮件(linux@insigma.com.cn)
本文链接:http://www.longene.org/forum/viewtopic.php?f=6&t=4709


调试qq有段时间了,在调试过程中有一些心得体会和大家分享一下,共同学习,共同进步。
本文会长篇连载,不断更新。

目录
一.准备篇
二.基础知识篇
三.wine调试方法
四.QQ调试记录

一.准备篇
1.安装wine-1.0,可以从下面的链接获取

http://ibiblio.org/pub/linux/system/emulators/wine/wine-1.0.tar.bz2
http://prdownloads.sourceforge.net/wine/wine-1.0.tar.bz2

2.qq2010的安装参考这篇文章:
http://www.longene.org/forum/viewtopic.php?f=5&t=4672&p=12142&hilit=qq#p12142

二.基础知识篇
1.LOG
LOG()函数的用法和log.h参考下面:
http://www.longene.org/forum/viewtopic.php?f=17&p=10075#p10075

调试工具很简单就是printf,但是很强大,
要做的就是添加log.h到wine-1.0/include/wine/目录下,
然后在你需要调试的c文件前面加上:
#define DEBUG_ SYSCALL
#include “wine/log.h”
或者
修改Makefile的方式,比如在dlls/gdi32/Makefile中的DEFS增加-DDEGUG_SYSCALL,
那么dlls/gdi32/目录下的所有c文件,你加了#include “wine/log.h”后都可以直接调用LOG()函数。
log的输出默认是在 /tmp/unified.trace,当然你可以 修改 LOG_FILE的定义成其他文件。
最有用的就是打印出该函数的调用栈,
LOG(LOG_FILE,1,0,"\n"); 那个参数1就表示要打印该函数的调用栈

2.proc/PID/maps 和 objdump
得到了调用栈,是类似下面的一些16进制地址,
call trace 下面的就是调用栈,p是进程号 , t是线程号
代码: 全选
p 5508 t 5508 HEAP_CreateFreeBlock 
call trace:
   return[01] 0x7bc42f26 
   return[02] 0x7bc431cc 
   return[03] 0x78134c39 
   return[04] 0x3081d997 
   return[05] 0x3081de6a
   return[06] 0x3081e607
   return[07] 0x3081080d
   return[08] 0x30811cf2 
   return[09] 0x61c2c399 
   return[10] 0x61c324e9
   return[11] 0x61c329dc
   return[12] 0x61c33bd8
   return[13] 0x61c34f63
   return[14] 0x61c4b95b 
   return[15] 0x3116d9d4 
   return[16] 0x3116e3ff
   return[17] 0x3116e66e
   return[18] 0x3123bf7f
   return[19] 0x3121d2c4
   return[20] 0x3121d920
   return[21] 0x3121dd34
   return[22] 0x3126fdcf 
   return[23] 0x300ff9a7 
   return[24] 0x300fe585
   return[25] 0x300f8243
   return[26] 0x300f8420
   return[27] 0x300eb95a
   return[28] 0x300ebe95
   return[29] 0x300e9ad7
   return[30] 0x300eab69
   return[31] 0x300ead5d
   return[32] 0x300eaef5 
   return[33] 0x7ecff3aa 
   return[34] 0x7ed00920 
   return[35] 0x7ed0378f 
   return[36] 0x7ecc4d56 
   return[37] 0x00402b86 
   return[38] 0x0040327a
   return[39] 0x0040254b
   return[40] 0x00406209 
   return[41] 0x7b877f80 
   return[42] 0xb777fb77


但是这些16进制地址,看不出任何信息,这时需要我们做如下工作:

1)取得进程号pid。ps -ef 得到linux下的所有进程,找到qq.exe的进程号 pid

2)取得进程的内存映射。cat /proc/进程号/maps | less ,类似如下:
代码: 全选
7ec34000-7ec50000 r-xp 00000000 08:01 867059     /usr/local/lib/wine/user32.dll.so
7ec50000-7ec51000 rw-p 00000000 00:00 0 
7ec51000-7ecd5000 r-xp 0001d000 08:01 867059     /usr/local/lib/wine/user32.dll.so
7ecd5000-7ecd6000 rwxp 000a1000 08:01 867059     /usr/local/lib/wine/user32.dll.so
7ecd6000-7ecd7000 r-xp 000a2000 08:01 867059     /usr/local/lib/wine/user32.dll.so
7ecd7000-7ecd8000 rwxp 000a3000 08:01 867059     /usr/local/lib/wine/user32.dll.so
7ecd8000-7ecd9000 r-xp 000a4000 08:01 867059     /usr/local/lib/wine/user32.dll.so
7ecd9000-7ecdd000 rwxp 000a5000 08:01 867059     /usr/local/lib/wine/user32.dll.so
7ecdd000-7ecf4000 r-xp 000a9000 08:01 867059     /usr/local/lib/wine/user32.dll.so
7ecf4000-7ecf6000 rwxp 000c0000 08:01 867059     /usr/local/lib/wine/user32.dll.so
7ecf6000-7ecf7000 r-xp 000c2000 08:01 867059     /usr/local/lib/wine/user32.dll.so
7ecf7000-7ecf8000 rwxp 000c3000 08:01 867059     /usr/local/lib/wine/user32.dll.so
7ecf8000-7ecfc000 r-xp 000c4000 08:01 867059     /usr/local/lib/wine/user32.dll.so
7ecfc000-7ecfe000 rwxp 000c8000 08:01 867059     /usr/local/lib/wine/user32.dll.so
7ecfe000-7ed21000 r-xp 000ca000 08:01 867059     /usr/local/lib/wine/user32.dll.so
7ed21000-7ed25000 r--p 000ec000 08:01 867059     /usr/local/lib/wine/user32.dll.so
7ed25000-7ed29000 rw-p 000f0000 08:01 867059     /usr/local/lib/wine/user32.dll.so
7ed29000-7ed2b000 rwxp 000f4000 08:01 867059     /usr/local/lib/wine/user32.dll.so
7ed2b000-7ed45000 rw-p 000f6000 08:01 867059     /usr/local/lib/wine/user32.dll.so
7ed45000-7ed7f000 rw-p 00000000 00:00 0 


3).把调用栈的地址和maps对比看映射在那个dll中。
例如:return[33] 0x7ecff3aa 就落在 user32.dll.so 这个dll中
获得它在user32.dll.so的偏移,需要做个减法:7ecff3aa - 7ec34000[user32.dll.so的首地址] = CB3AA 记住这个偏移。
其中 ntdll.dll.so kernel.dll.so 不需要做上面的减法。

4).objdump反汇编dll,定位到函数。
到 /usr/local/lib/wine/目录下
objdump -S user32.dll.so | less 或者 objdump -d user32.dll.so | less 
然后搜索 CB3AA 就可以定位到是被那个函数调用的了

3.IDA 和 LordPE [这2个工具网上都有,直接搜索下载安装]
有时地址并非都是 wine-1.0 自己的dll 
像 return[04] 0x3081d997 ,就落在QQ/Bin/GF.dll中,
这时还是像上面一样做减法,得到偏移,然后用 LordPE 加载GF.dll ,得到镜像基址,
做加法得到:addr = 偏移 + 镜像基址,记住这个addr
然后用 IDA 加载GF.dll,按快捷键G 输入那个 addr 就定位到了GF.dll 的函数,
最后由 smile 编辑于 2011-05-09 10:42,总共编辑了 7 次
smile
 
帖子: 130
注册: 2010-06-07 15:01

Re: 和我一起调QQ

帖子由 smile 于 2011-04-29 10:31

三.wine调试方法

寻找程序在wine上崩溃的原因最有用的工具就是wine的日志系统(logging system)
语法如下:
代码: 全选
WINEDEBUG=[class][+/-]channel[,[class2][+/-]channel2] wine myprogram.exe

class是可选的,共有四种:err, warn, fixme, trace
channel有很多种,可以根据需要打开,下面的几个很有用:
* all --打开所有的log
* heap -- 打印堆管理相关函数并且包括一些额外的检查
* message -- 打印windows消息相关函数
* msgbox -- 打印消息弹出窗口相关函数
* relay -- 打印所有Wine builtin DLLs函数的调用
* seh -- 打印windows的异常(SEH结构化异常处理)
* snoop -- 打印所有Native DLLs函数的调用
* synchronous -- 强制 X11进入同步模式
* tid -- 打印线程ID号

下面是一些例子:
WINEDEBUG=warn+all 打开所有的warn信息
WINEDEBUG=warn+dll,+heap 打开所有的warn信息和所有的heap相关的信息
WINEDEBUG=fixme-all,warn+cursor,+relay 关掉所有的FIXME,打开cursor警告信息和relay信息
WINEDEBUG=+relay 打开所有的relay信息

更多的channel,可以参考:
http://www.winehq.org/site/developer-cheatsheet
http://wiki.winehq.org/DebugChannels

四.QQ调试记录【未完成】
 
posted @ 2012-05-23 14:10  陳聽溪  阅读(891)  评论(0)    收藏  举报