??xml version="1.0" encoding="utf-8" standalone="yes"?>久久国产成人亚洲精品影院,午夜精品久久影院蜜桃,久久综合亚洲色一区二区三区 http://www.shnenglu.com/momoxiao/category/14762.htmlzh-cn Tue, 27 Sep 2011 23:03:53 GMT Tue, 27 Sep 2011 23:03:53 GMT 60 phpmyadmin http://www.shnenglu.com/momoxiao/archive/2011/09/24/156717.html默 默 Sat, 24 Sep 2011 14:09:00 GMT http://www.shnenglu.com/momoxiao/archive/2011/09/24/156717.html http://www.shnenglu.com/momoxiao/comments/156717.html http://www.shnenglu.com/momoxiao/archive/2011/09/24/156717.html#Feedback 0 http://www.shnenglu.com/momoxiao/comments/commentRss/156717.html http://www.shnenglu.com/momoxiao/services/trackbacks/156717.html # yum install phpmyadmin
Config:# vim / usr / share / phpMyAdmin / config.inc.php
$cfg['blowfish_secret'] = 'colorfulgreen'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
Run: # /etc/init.d/mysqld start # service httpd start ]]>django debug toolbar http://www.shnenglu.com/momoxiao/archive/2011/06/14/148655.html默 默 Tue, 14 Jun 2011 09:40:00 GMT http://www.shnenglu.com/momoxiao/archive/2011/06/14/148655.html http://www.shnenglu.com/momoxiao/comments/148655.html http://www.shnenglu.com/momoxiao/archive/2011/06/14/148655.html#Feedback 0 http://www.shnenglu.com/momoxiao/comments/commentRss/148655.html http://www.shnenglu.com/momoxiao/services/trackbacks/148655.html 下蝲: https://github.com/dcramer/django-debug-toolbar
有两个branches, master可以看sql语句执行的代码流.
安装:
$ tar zxvf robhudson - django - debug - toolbar - 7ba80e0.tar.gz $ cd robhudson - django - debug - toolbar - 7ba80e0 $ python . / setup.py build $ sudo python . / setup.py install
从python shell里import正常,pC安装正?
>>> import debug_toolbar >>>
配置:
在app的settings.py中加入下面的内容.
MIDDLEWARE_CLASSES = ( ' debug_toolbar.middleware.DebugToolbarMiddleware ' , ) INSTALLED_APPS = ( ' debug_toolbar ' ) TEMPLATE_DIRS = ( ' /Library/Python/2.6/site-packages/django_debug_toolbar-0.8.3-py2.6.egg/debug_toolbar/templates/ ' , # 按需修改Q指?nbsp;debug_toolbar 的模板目录?/span>) DEBUG_TOOLBAR_PANELS = ( ' debug_toolbar.panels.version.VersionDebugPanel ' , ' debug_toolbar.panels.timer.TimerDebugPanel ' , ' debug_toolbar.panels.settings_vars.SettingsVarsDebugPanel ' , ' debug_toolbar.panels.headers.HeaderDebugPanel ' , ' debug_toolbar.panels.request_vars.RequestVarsDebugPanel ' , ' debug_toolbar.panels.template.TemplateDebugPanel ' , ' debug_toolbar.panels.sql.SQLDebugPanel ' , ' debug_toolbar.panels.signals.SignalDebugPanel ' , ' debug_toolbar.panels.logger.LoggingPanel ' ) INTERNAL_IPS = ( ' 127.0.0.1 ' ,) # 从哪些ip讉K站点时显Ctoolbar.
然后,没有然后了...讉K站点?会在每个|页的右侧显CZ个toolbar...
--
from:http://www.kuangxuqing.com/posts/16700.html#django_debug_toolbar
]]>安装MYSQL后,Apache http server 遇到问题需要关?/title> http://www.shnenglu.com/momoxiao/archive/2010/04/19/112977.html默 默 Mon, 19 Apr 2010 05:04:00 GMT http://www.shnenglu.com/momoxiao/archive/2010/04/19/112977.html http://www.shnenglu.com/momoxiao/comments/112977.html http://www.shnenglu.com/momoxiao/archive/2010/04/19/112977.html#Feedback 0 http://www.shnenglu.com/momoxiao/comments/commentRss/112977.html http://www.shnenglu.com/momoxiao/services/trackbacks/112977.html ]]> 80端口 被占?/title> http://www.shnenglu.com/momoxiao/archive/2010/04/13/112489.html默 默 Tue, 13 Apr 2010 11:58:00 GMT http://www.shnenglu.com/momoxiao/archive/2010/04/13/112489.html http://www.shnenglu.com/momoxiao/comments/112489.html http://www.shnenglu.com/momoxiao/archive/2010/04/13/112489.html#Feedback 0 http://www.shnenglu.com/momoxiao/comments/commentRss/112489.html http://www.shnenglu.com/momoxiao/services/trackbacks/112489.html cmdQnetstat -anoQ占?0端口的程序pid?168
C:\Documents and Settings\Administrator > netstat - ano Active Connections Proto Local Address Foreign Address State PID TCP 0.0 . 0.0 : 80 0.0 . 0.0 : 0 LISTENING 1168
打开d理器,查看->选择列,加上pid pid=1168的是Thunder5.exe q雷BT的TCP端口?0Q改?img src ="http://www.shnenglu.com/momoxiao/aggbug/112489.html" width = "1" height = "1" /> ]]> install samba for Fedora10 http://www.shnenglu.com/momoxiao/archive/2010/03/23/110357.html默 默 Tue, 23 Mar 2010 08:08:00 GMT http://www.shnenglu.com/momoxiao/archive/2010/03/23/110357.html http://www.shnenglu.com/momoxiao/comments/110357.html http://www.shnenglu.com/momoxiao/archive/2010/03/23/110357.html#Feedback 0 http://www.shnenglu.com/momoxiao/comments/commentRss/110357.html http://www.shnenglu.com/momoxiao/services/trackbacks/110357.html install error: can't create transaction lock on /var/lib/rpm/__db.000 (没有那个文g或目?
su
Error: Missing Dependency: perl(Convert::ASN1) is needed by package samba-3.0.33-3.7.el5.i386 (base)
[root@colorfulgreen Packages]# rpm - ivh perl - Convert - ASN1 - 0.21 - 3 .fc9.noarch.rpm
[root@colorfulgreen Packages]# rpm - ivh samba * .rpm
warning: samba-3.2.4-0.22.fc10.i386.rpm: Header V3 DSA signature: NOKEY, key ID 4ebfc273 //samba not in "\ect\init.d\" at this time,then...
rpm - ivh samba - 3.2 . 4 - 0.22 .fc10.i386.rpm
Add Shares edit the config file:
[root@colorfulgreen Packages]# sudo gedit / etc / samba / smb.conf
Add shares at the end of the file:
[netshare] path = / home / green / netshare public = yes writable = yes
Add Users
[root@colorfulgreen Packages]# sudo smbpasswd - a green New SMB password: Retype new SMB password: Added user green.
Start Samba Service
[root@colorfulgreen / ]# / etc / init.d / smb start 启动 SMB 服务Q?nbsp; [定]
//enable samba in both runlevel 3 and 5.This will make sure to run Samba each time Fedora boots.
[root@colorfulgreen / ]# / sbin / chkconfig -- list smb smb 0 :关闭 1 :关闭 2 :关闭 3 :关闭 4 :关闭 5 :关闭 6 :关闭 [root@colorfulgreen / ]# / sbin / chkconfig -- level 35 smb on [root@colorfulgreen / ]# / sbin / chkconfig -- list smb smb 0 :关闭 1 :关闭 2 :关闭 3 :启用 4 :关闭 5 :启用 6 :关闭
//Restart Samba for every change to users/pws or 'smb.conf'
[root@colorfulgreen / ]# / etc / init.d / smb restart 关闭 SMB 服务Q?nbsp; [定] 启动 SMB 服务Q?nbsp; [定]
Managing Security for Samba Firewall:default block Samba,allow access...
[root@colorfulgreen / ]# system - config - firewall
SELinux:restrict different parts of Samba...
[root@colorfulgreen / ]# system - config - selinux
[root@colorfulgreen green]# smbclient - L 192.168 . 1.101 - U administrator Enter administrator ' s password:
]]> SourceInsight linux内核 汇编 .s http://www.shnenglu.com/momoxiao/archive/2010/02/06/107349.html默 默 Fri, 05 Feb 2010 18:31:00 GMT http://www.shnenglu.com/momoxiao/archive/2010/02/06/107349.html http://www.shnenglu.com/momoxiao/comments/107349.html http://www.shnenglu.com/momoxiao/archive/2010/02/06/107349.html#Feedback 0 http://www.shnenglu.com/momoxiao/comments/commentRss/107349.html http://www.shnenglu.com/momoxiao/services/trackbacks/107349.html 在File Filter里添?.S卛_ ]]> (zz)vmware |络配置实例?windows xp host + linux guest http://www.shnenglu.com/momoxiao/archive/2010/02/05/107322.html默 默 Fri, 05 Feb 2010 15:53:00 GMT http://www.shnenglu.com/momoxiao/archive/2010/02/05/107322.html http://www.shnenglu.com/momoxiao/comments/107322.html http://www.shnenglu.com/momoxiao/archive/2010/02/05/107322.html#Feedback 1 http://www.shnenglu.com/momoxiao/comments/commentRss/107322.html http://www.shnenglu.com/momoxiao/services/trackbacks/107322.html
正文Q?/p>
本h使用的是vmware workstation 4.52Qhost机器q行的是windows Xp professional Q如果你q在使vmware workstation 4.0下蝲一个升U包Q不q我惛_使不做问题也不大?/p>
1。安?nbsp;vmware workstationQ很单,一路okq去Q相信大部分朋友已经装好?/p>
2。创建新的guestpȝ。选择cd。因为我以发生问题最多的redhat 9做试验,所以就选redhat linuxQ选customQ网l接口选hostonlyQ如果你已经安装 ?nbsp;了,用了nat或bridge也没有关p,在虚拟机的属性里Ҏhostonlyp了。)
3。创建后启动虚拟机,插入安装rh9的第一张盘。选择定制安装Q我只保留了gonme, XQ?nbsp;和graphical internet,节省安装I间和时间?/p>
4。安装过E很利Q没有问题,完成后重新启动虚拟机Q发现在更新fstab的时候挂了v来,估计是连接cdromzY盘时候超时。kill掉虚拟机Q更改设|,把光驱和软盘的autoconnect when power on清除掉。重启虚拟机Q没有问题,q入最后设|,声卡Q图形界面均没有问题?/p>
5。按照要求在虚拟机里安装vmware-tool,寚w标和囑Şq行更好地支持?/p>
如果你在囑Ş界面下,首先要切换到文本模式?/p>
右键点击桌面Q打开一个終?/p>
在終端里Q?/p>
su
#/sbin/telinit 3
囑Ş界面消失Q敲回R几下Q在文本方式下登录?/p>
在windows的vmware的窗口菜单中选vm->install vmware tools
在虚拟机中:
su
mount /dev/cdrom /mnt/cdrom
cd /tmp
tar zxf /mnt/cdrom/vmware-linux-tools.tar.gz
cd vmware-tools-distrib
./vmware-install.pl
回答q设|屏q分辨率Q除了分辨率需要选择外,直接回Rp了?/p>
q回到默认的囑Ş界面Q运行?Q?/p>
/sbin/telinit 5
6.d虚拟机,打开一个終端:
/sbin/ifconfig
发现eth0没有h?/p>
不要惊慌?/p>
Q-Q-Q-Q-Q-Q-Q以下是|络讄Q-Q-Q-Q-Q-Q-Q-Q?/p>
7。到windows XP 中,查看所有的|络q接Q你应该发现除了原有的网卡之外,又多了Vmnet1和Vmnet8。如果你看了一下说明书应该知道Qvmnet1是hostonly的接口,而Vmnet8是用NAT的网l接口。在q里我们既不想用VMWARE自带的DHCP也不想用他的NAT所以我们知兛_VMnet1
在进一步操作之前先说一下idea:
我们用hostonlyq个|络接口q接虚拟机和LQ然后利用windows Xp/2000里面自带的internetq接׃nQ实际上是一个简单的路由NAT)来让虚拟?nbsp;通过原来的网卡进行外|的讉K?/p>
那么Z么不使用桥接的方式呢Q我在前一文章(linux host + windows guest)里面已经有些讨论Q请参考。不q最现实的原因是桥接需要一个不同于 原主Z的另外一个独立的IP地址Q这对于有些情况QIP和MACl定Q网不同意Q,比较隑֊到?/p>
OKQ?nbsp;let's go
Q?Q查看你的连接外|的|卡的属性,选择“高”标签Q设|成允许׃nQƈ讑֮允许的网l接口ؓVMNET1,如下图?/p>
(2)再插看一下你的VMnet1 的属性,看一下TCP/IP协议的设|,你发现已l被自动讄?92.168.0.1/255.255.255.0Q如下图?/p>
Q?Qwindows下的讄完成Q{入到跑linux的虚拟机。将你的eth0的ip地址讄为静态的Q如果安装时没有选静态的话)
Q?Qwindows下的讄完成Q{入到跑linux的虚拟机。将你的eth0的ip地址讄为静态的Q如果安装时没有选静态的话)?/p>
按红帽子图标Q>pȝ讄Q>|络Q或其它你了解的ҎQ?/p>
ipQ?nbsp;192.168.0.2(或其它在此网D上的地址Q?/p>
netmask: 255.255.255.0
default gateway: 192.168.0.1
dns:输入你自qDNS
保存讄。如果你q没有设|好L名称Q?/p>
cd /etc/sysconfig
vi network
~辑HOSTNAME
cd /etc
vi hosts
加入Q?/p>
192.168.0.2 yourhostname
重新启动服务
su
/sbin/service network restart
(4)试 一?/p>
|关Q?nbsp;ping 192.168.0.1
dns: ping dnsserver
另请参阅Q?/p>
vmware 配置实例一 linux host + windows guest + firewall
http://bbs.chinaunix.net/forum/viewtopic.php?t=367907&highlight=yunqing
vmware |络讄三:理解虚拟|络的类?/p>
http://bbs.chinaunix.net/forum/viewtopic.php?t=376768&highlight=yunqing
]]>[zz]虚拟机Virtual PCQVmware里安装SoftICE http://www.shnenglu.com/momoxiao/archive/2010/01/06/104950.html默 默 Wed, 06 Jan 2010 10:28:00 GMT http://www.shnenglu.com/momoxiao/archive/2010/01/06/104950.html http://www.shnenglu.com/momoxiao/comments/104950.html http://www.shnenglu.com/momoxiao/archive/2010/01/06/104950.html#Feedback 0 http://www.shnenglu.com/momoxiao/comments/commentRss/104950.html http://www.shnenglu.com/momoxiao/services/trackbacks/104950.html ?nbsp;? CCDebuger 详细信息: 1、Virtual PCQ?br>看雪论坛 Phoenix 的方法: 是用TRW2000的时候虚拟的98pȝ里不能有VPC的附加模块存在,已经装了的要完全卸蝲掉?br> 昨天弄了一下,开始我的也不能正常q行Q不对,应该说不能正常显C试窗口,在虚拟的98里按CTRL+N试图呼出TRW2000Q没有反应,但是把VPC的窗口最化再最大化hQ发现TRW2000的黑p糊的调试窗口出来了Q原来TRW2000q行了只是调试窗口不能正常显C?nbsp;联想C前在VMWARE里面用TRW2000也不正常Q但是把VMWARE的附加模块VMTOOLS卸蝲后就正常了(我原来安装了Q,所以我在虚拟的98里把以前安装的VPC的附加模块也卸掉试了一下,BINGOQ?nbsp;成功了,是我上面的截图Q现在可以正常用了,跟程序也没问题了Q但是虚拟系l里没有附加模块用v来很不爽Q我是这栯决的Q装?8Q在虚拟98pȝ里装附加模块Q把TRW2000拯去,关闭虚拟98pȝQ然后打开虚拟机的q原功能Q这h每次用TRW2000的时候把附加模块完全卸蝲掉就可以正常用了Q关闭虚拟系l的时候选择q原所有硬盘更斎ͼq样因ؓ有还原,所以每ơ虚拟系l启动后附加模块q是能用Q我的VPC?.2版?br> 2、Vmware WorkStationQ?br>官方解释Q?br>?br>在Vmware WorkStation 安装目录下有个配|文Ӟ可以直接用记事本打开~辑Q?.vmx,先关了VM,再在 VM的配|文?vmx 末尾d下面两行: vmmouse.present="FALSE" svga.maxFullscreenRefreshTick="5" ?br>若采用官Ҏ供方法不行,L文本~辑器打开虚拟机的配置文g (.vmx)Q添加以下两行: vmmouse.present = FALSE svga.forceTraces = "TRUE" q样?nbsp;SoftICE 中中断,若原来你的鼠标及屏幕失去响应Q你的虚拟操作系l挂h此时会正常?br> dq两行可以让你的 SoftICE 在虚拟机中运行,但是会降低虚拟操作系l的性能。徏议在不?nbsp;SoftICE 时去掉这两行?br>有时q配置了以上的选项Q按 Ctrl-D 的时候也不会昄 SoftICE H口且你的鼠标及屏幕也失M响应。此时再?nbsp;Ctrl-D 退?nbsp;SoftICEQ然后按下面解释的方法来?nbsp; SoftICE q行?nbsp;VGA 模式Q?nbsp; 打开命o行窗?nbsp;(例如Q选择 开?nbsp;> q行Q输?nbsp;cmd 然后点击定)?nbsp; ?nbsp;Alt-Enter q入 VGA 模式?nbsp; ?nbsp;Ctrl-D 调出 SoftICE?nbsp; ]]> SoftICE - Matching PDB file not found http://www.shnenglu.com/momoxiao/archive/2010/01/06/104933.html默 默 Wed, 06 Jan 2010 09:35:00 GMT http://www.shnenglu.com/momoxiao/archive/2010/01/06/104933.html http://www.shnenglu.com/momoxiao/comments/104933.html http://www.shnenglu.com/momoxiao/archive/2010/01/06/104933.html#Feedback 0 http://www.shnenglu.com/momoxiao/comments/commentRss/104933.html http://www.shnenglu.com/momoxiao/services/trackbacks/104933.html ]]>[zz]׃的娱?IDA逆向工程入门(?-汇编E序实战 http://www.shnenglu.com/momoxiao/archive/2009/12/25/104043.html默 默 Fri, 25 Dec 2009 04:12:00 GMT http://www.shnenglu.com/momoxiao/archive/2009/12/25/104043.html http://www.shnenglu.com/momoxiao/comments/104043.html http://www.shnenglu.com/momoxiao/archive/2009/12/25/104043.html#Feedback 0 http://www.shnenglu.com/momoxiao/comments/commentRss/104043.html http://www.shnenglu.com/momoxiao/services/trackbacks/104043.html 【文章作者? layper 【作者邮? layper@yahoo.com.cn 【作者主c? http://blog.csdn.net/layper/ 【Y件名U? biatch 【下载地址? 自己搜烦下蝲 【用工兗? IDA,Radasm,Resource Hacker 【作者声明? 只是感兴,没有其他目的。失误之处敬误位大侠赐? -------------------------------------------------------------------------------- 【详l过E?br> q段旉忙着学习|页制作,刚刚初学,N多问题要学习,搞得我头晕脑?现在放松一?l箋逆向玩玩.:) 汇编E序在逆向工程中是比较单的一U语a,反汇~得到的代码基本上与源码差不?只是E微作点修改可以了.前面?br> 几篇都是有源码对照的例子,q篇我们q行实战,没有源码.:) q是老外的一个工具biatch,今天拿他开刀. IDA载入完成?文g-创徏文g-创徏asm文g保存?.asm。接着用Resource Hacker载入biatch,保存对话框资源ؓ1.rc?br> 用RadASM载入1.asmQ好了初步工作完成了,接下来先按照上次我写的第三篇步骤来修? (一)增加模式定义\options语句\q原include\lib语句 在IDA中Shift+F7打开区段H口接着双击.idata来到.idataD? .idata:00403000 ; .idata:00403000 ; Imports from comdlg32.dll注意q里,使用comdig32.dll .idata:00403000 ; .idata:00403000 ; 屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯? .idata:00403000 .idata:00403000 ; Segment type: Externs .idata:00403000 ; _idata .idata:00403000 ; BOOL __stdcall GetOpenFileNameA(LPOPENFILENAMEA) .idata:00403000 extrn __imp_GetOpenFileNameA:dword .idata:00403000 ; DATA XREF: GetOpenFileNameAr .idata:00403000 ; Create an Open common dialog box .idata:00403004 .idata:00403008 ; .idata:00403008 ; Imports from gdi32.dll注意q里,使用gdi32.dll .idata:00403008 ; .idata:00403008 ; HFONT __stdcall CreateFontIndirectA(const LOGFONTA *) .idata:00403008 extrn __imp_CreateFontIndirectA:dword .idata:00403008 ; DATA XREF: CreateFontIndirectAr .idata:0040300C ; BOOL __stdcall DeleteObject(HGDIOBJ) .idata:0040300C extrn __imp_DeleteObject:dword ; DATA XREF: DeleteObjectr .idata:00403010 .idata:00403014 ; .idata:00403014 ; Imports from kernel32.dll注意q里,使用kernel32.dll .idata:00403014 ; .idata:00403014 ; LPTOP_LEVEL_EXCEPTION_FILTER __stdcall SetUnhandledExceptionFilter(LPTOP_LEVEL_EXCEPTION_FILTER lpTopLevelExceptionFilter) .idata:00403014 extrn __imp_SetUnhandledExceptionFilter:dword .idata:00403014 ; DATA XREF: SetUnhandledExceptionFilterr .idata:00403018 ; HANDLE GetProcessHeap(void) .idata:00403018 extrn __imp_GetProcessHeap:dword .idata:00403018 ; DATA XREF: GetProcessHeapr .idata:0040301C ; BOOL __stdcall CloseHandle(HANDLE hObject) .idata:0040301C extrn __imp_CloseHandle:dword ; DATA XREF: CloseHandler .idata:00403020 ; HANDLE __stdcall CreateFileA(LPCSTR lpFileName,DWORD dwDesiredAccess,DWORD dwShareMode,LPSECURITY_ATTRIBUTES lpSecurityAttributes,DWORD dwCreationDisposition,DWORD dwFlagsAndAttributes,HANDLE hTemplateFile) .idata:00403020 extrn __imp_CreateFileA:dword ; DATA XREF: CreateFileAr ....................... ........................ .idata:00403040 ; HMODULE __stdcall GetModuleHandleA(LPCSTR lpModuleName) .idata:00403040 extrn __imp_GetModuleHandleA:dword .idata:00403040 ; DATA XREF: GetModuleHandleAr .idata:00403044 ; void __stdcall ExitProcess(UINT uExitCode) .idata:00403044 extrn __imp_ExitProcess:dword ; DATA XREF: ExitProcessr .idata:00403048 ; LPVOID __stdcall HeapAlloc(HANDLE hHeap,DWORD dwFlags,DWORD dwBytes) .idata:00403048 extrn __imp_HeapAlloc:dword ; DATA XREF: HeapAllocr .idata:0040304C .idata:00403050 ; .idata:00403050 ; Imports from user32.dll注意q里,使用user32.dll .idata:00403050 ; .idata:00403050 ; LONG __stdcall SetWindowLongA(HWND hWnd,int nIndex,LONG dwNewLong) .idata:00403050 extrn __imp_SetWindowLongA:dword .idata:00403050 ; DATA XREF: SetWindowLongAr ................................. .idata:00403098 extrn __imp_CheckDlgButton:dword .idata:00403098 ; DATA XREF: CheckDlgButtonr .idata:00403098 ; Change the check state of a button control .idata:0040309C ; LRESULT __stdcall CallWindowProcA(WNDPROC lpPrevWndFunc,HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam) .idata:0040309C extrn __imp_CallWindowProcA:dword .idata:0040309C ; DATA XREF: CallWindowProcAr .idata:004030A0 ; BOOL __stdcall ShowWindow(HWND hWnd,int nCmdShow) .idata:004030A0 extrn __imp_ShowWindow:dword ; DATA XREF: ShowWindowr .idata:004030A4 ; int wsprintfA(LPSTR,LPCSTR,...) .idata:004030A4 extrn __imp_wsprintfA:dword ; DATA XREF: wsprintfAr .idata:004030A8 从这里知道了用到四个dll,即comdlg32.dll、gdi32.dll、kernel32.dll、user32.dllQ所以我们还原的include和includelibp包含 q几个dll?br> 所以把 .686p .mmx .model flat q原? .686p .mmx .model flat,stdcall option casemap:none include WINDOWS.INC include comdlg32.inc includelib comdlg32.lib include gdi32.inc includelib gdi32.lib include kernel32.inc includelib kernel32.lib include user32.inc includelib user32.lib 删除前面?idataD? (?删除l构 在RadASM中Ctrl+F5试着构徏q运?有错误提C? D:\masm32\Include\WINDOWS.INC(9666) : error A2163: : LOGFONTA D:\masm32\Include\WINDOWS.INC(9667) : error A2163: : LOGFONTA D:\masm32\Include\WINDOWS.INC(9668) : error A2163: : LOGFONTA D:\masm32\Include\WINDOWS.INC(9669) : error A2163: : LOGFONTA D:\masm32\Include\WINDOWS.INC(9670) : error A2163: : LOGFONTA 从这里可以判?.asm的LOGFONTAD出错,删除LOGFONTAl构(在开头处).把tagOFNAl构Ud到includelib user32.lib后面. (?修改Ud_dataD?br> 在_textD前增加 .data 把_data全部Ud.data之后 删除_dataD开头的 _data segment para public 'DATA' use32 assume cs:_data 和_data末尾?br> _data ends 注意:中间的代码不要删?!! (?修改_textD?br> 加上.code _text segment para public 'CODE' use32 ;在这之前加上.code 删除_text开头的 _text segment para public 'CODE' use32 assume cs:_text ;org 401000h assume es:nothing, ss:nothing, ds:_data, fs:nothing, gs:nothing 和_text末尾?br> _text ends 注意:中间的代码不要删?!! (?修改hWnd错误 在RadASM中Ctrl+F5试着构徏q运?有错误提C? D:\crack\国外工具\tf10\1.asm(834) : error A2005: : hWnd D:\crack\国外工具\tf10\1.asm(1286) : error A2005: : hWnd D:\crack\国外工具\tf10\1.asm(1499) : error A2005: : hWnd D:\crack\国外工具\tf10\1.asm(1640) : error A2005: : hWnd D:\crack\国外工具\tf10\1.asm(2609) : error A2189: : 128 D:\crack\国外工具\tf10\1.asm(821) : error A2005: : hWnd D:\crack\国外工具\tf10\1.asm(1277) : error A2005: : hWnd D:\crack\国外工具\tf10\1.asm(1489) : error A2005: : hWnd D:\crack\国外工具\tf10\1.asm(1629) : error A2005: : hWnd ?dataD寻找hWnd ; HWND hWnd hWnd dd 0 ; DATA XREF: DialogFunc+241r ; DialogFunc+264w DialogFunc+26Dr ; DialogFunc+28Br DialogFunc+29Dr ; sub_401500+9r ... q个提示两个函数DialogFunc和sub_401500用到q个全局变量hWnd,其他函数的hWnd错误的地斏V我?br>逐条L出错位置 1.asm(834) : error A2005: : hWnd q条错误?br>sub_401500 proc near ; CODE XREF: DialogFunc+21Fp var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch hWnd = dword ptr -8 ;q里出错,q里的局部变量hWnd与全局变量hWnd冲突,修改为hWnd1 lpMem = dword ptr -4 hDlg = dword ptr 8 在IDA中打开FunctionsH口,扑ֈsub_401500, sub_401500 .text 00401500 00000291 R . . . B T . 双击来到sub_401500?br>.text:00401500 sub_401500 proc near ; CODE XREF: DialogFunc+21Fp .text:00401500 .text:00401500 var_18 = dword ptr -18h .text:00401500 var_14 = dword ptr -14h .text:00401500 var_10 = dword ptr -10h .text:00401500 var_C = dword ptr -0Ch .text:00401500 hWnd = dword ptr -8 ;修改q里为hWnd1 .text:00401500 lpMem = dword ptr -4 .text:00401500 hDlg = dword ptr 8 在hWnd上右?重命名把hWnd为hWnd1. 注意:推荐在IDA里面重命名hWnd,l过修改后IDA自动识别全局变量hWnd和hWnd1比手动快,而且正确率高. l箋查找 1.asm(1286) : error A2005: : hWnd 错误?br>sub_401810 proc near ; CODE XREF: sub_401380+130p hWnd = dword ptr -8 ;在IDA中修改ؓhWnd1 lpMem = dword ptr -4 hDlg = dword ptr 8 1.asm(1499) : error A2005: : hWnd 扑ֈ sub_401A10 proc near ; CODE XREF: DialogFunc+233p var_8 = dword ptr -8 hWnd = dword ptr -4 ;在IDA中修改ؓhWnd1 hDlg = dword ptr 8 1.asm(1640) : error A2005: : hWnd 扑ֈ sub_401B6C proc near ; DATA XREF: DialogFunc+9Eo ; DialogFunc+CBo sub_401380+57o hWnd = dword ptr 8 ;q个不是局部变量了 Msg = dword ptr 0Ch wParam = dword ptr 10h lParam = dword ptr 14h 因ؓq里不是局部变量了,我们先修改前面三个函?或者子E序),sub_401500,sub_401810,sub_401A10. 保存修改后的代码?.asm,接着?.asm里的sub_401500,sub_401810,sub_401A10q三个函数全部用2.asm 里的sub_401500,sub_401810,sub_401A10替换? 接着在RadASM中Ctrl+F5构徏q运? D:\crack\国外工具\tf10\1.asm(1640) : error A2005: : hWnd D:\crack\国外工具\tf10\1.asm(2609) : error A2189: : 128 D:\crack\国外工具\tf10\1.asm(1629) : error A2005: : hWnd 看来sub_401B6C的hWnd也要Ҏ,在IDA中修改后覆盖?.asm? D:\crack\国外工具\tf10\1.asm(2609) : error A2189: : 128 hWnd没有出现错误? (?删除align 1.asm(2609) : error A2189: : 128 ;q里是align,直接删除?br> (?修改fs[0] 前面几篇都没有涉及到q个内容,q里出现关于fs[0]的出错代码的修改. D:\crack\国外工具\tf10\1.asm(1950) : error A2206: D:\crack\国外工具\tf10\1.asm(1951) : error A2206: D:\crack\国外工具\tf10\1.asm(1971) : error A2206: q几行在1.asm对应的代码是sub_401D80?br> push large dword ptr fs:0 mov large fs:0, esp pop large dword ptr fs:0 q几行代码都?br> D:\crack\国外工具\tf10\1.asm(2010) : error A2206: D:\crack\国外工具\tf10\1.asm(2011) : error A2206: D:\crack\国外工具\tf10\1.asm(2054) : error A2206: q几行在1.asm对应的代码是sub_401DE0?br> push large dword ptr fs:0 mov large fs:0, esp pop large dword ptr fs:0 D:\crack\国外工具\tf10\1.asm(2422) : error A2206: D:\crack\国外工具\tf10\1.asm(2423) : error A2206: D:\crack\国外工具\tf10\1.asm(2478) : error A2206: q几行在1.asm对应的代码是sub_402050?br> push large dword ptr fs:0 mov large fs:0, esp pop large dword ptr fs:0 D:\crack\国外工具\tf10\1.asm(2536) : error A2206: D:\crack\国外工具\tf10\1.asm(2537) : error A2206: D:\crack\国外工具\tf10\1.asm(2581) : error A2206: q几行在1.asm对应的代码是sub_4020F0?br> push large dword ptr fs:0 mov large fs:0, esp pop large dword ptr fs:0 q几句代码的写法不正?我们把他们改?br> push fs:[0] mov fs:[0], esp pop fs:[0] 试构行看?br>D:\crack\国外工具\tf10\1.asm(1950) : error A2108: D:\crack\国外工具\tf10\1.asm(1951) : error A2108: D:\crack\国外工具\tf10\1.asm(1971) : error A2108: D:\crack\国外工具\tf10\1.asm(2010) : error A2108: D:\crack\国外工具\tf10\1.asm(2011) : error A2108: D:\crack\国外工具\tf10\1.asm(2054) : error A2108: D:\crack\国外工具\tf10\1.asm(2422) : error A2108: D:\crack\国外工具\tf10\1.asm(2423) : error A2108: D:\crack\国外工具\tf10\1.asm(2478) : error A2108: D:\crack\国外工具\tf10\1.asm(2536) : error A2108: D:\crack\国外工具\tf10\1.asm(2537) : error A2108: D:\crack\国外工具\tf10\1.asm(2581) : error A2108: q是提示出错,l过认真观察,参考了其他代码,我在函数sub_401D80,sub_401DE0,sub_4020F0,sub_4020F0开头处加上一?br>代码: assume fs:nothing 查一下资?因ؓMASM~译器默认是把FS定义为error,所以在E序中要使用FS寄存器就要用 assume fs:nothing 来声明,否则׃报错?br>构徏q行 D:\masm32\BIN\ML.EXE /c /coff /Cp /nologo /I"D:\masm32\Include" "D:\crack\国外工具\tf10\1.asm" Assembling: D:\crack\国外工具\tf10\1.asm D:\masm32\BIN\LINK.EXE /SUBSYSTEM:WINDOWS /RELEASE /VERSION:4.0 /LIBPATH:"D:\masm32\LIB" "D:\crack\国外工具\tf10\1.obj" Microsoft (R) Incremental Linker Version 5.12.8078 Copyright (C) Microsoft Corp 1992-1998. All rights reserved. 执行: "D:\crack\国外工具\tf10\1.exe" 构徏完成. d~译旉 781 毫秒 无错误提C?呵呵,我们逆向的代码初步成功了. (?加入资源 我们试运?.exe发现没有出现界面,q个是没有把资源加回去才出现这U错误的. 利用Resource Hacker生成?.rc修改后用makefile文g把资源文件编译进? 1.rc所做的修改如下: 增加 #include <resource.h> 删除?br>LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL makefile文g: NAME = 1 OBJS = $(NAME).obj RES = $(NAME).res LINK_FLAG = /subsystem:windows ML_FLAG = /c /coff $(NAME).exe: $(OBJS) $(RES) Link $(LINK_FLAG) $(OBJS) $(RES) .asm.obj: ml $(ML_FLAG) $< .rc.res: rc $< clean: del *.obj del *.res 注意:q里~译我直接用命o行Ş式编?不用RadASM. 呵呵,现在你已l拥有一份不太完善的biatch的源码了. 汇编E序的逆向工程告一D落?我这里演C的只是一部分q原Ҏ或注意事?在实际应用当?br>q不是仅仅这几步内容(比如优化是非常重要),q个p多多q行l习来提高水q了?br> -------------------------------------------------------------------------------- 【版权声明? 转蝲h明作者ƈ保持文章的完? 谢谢! 2007q?3?0?nbsp;0:46:41 ]]> [zz]׃的娱?IDA逆向工程入门(? http://www.shnenglu.com/momoxiao/archive/2009/12/25/104040.html默 默 Fri, 25 Dec 2009 04:10:00 GMT http://www.shnenglu.com/momoxiao/archive/2009/12/25/104040.html http://www.shnenglu.com/momoxiao/comments/104040.html http://www.shnenglu.com/momoxiao/archive/2009/12/25/104040.html#Feedback 0 http://www.shnenglu.com/momoxiao/comments/commentRss/104040.html http://www.shnenglu.com/momoxiao/services/trackbacks/104040.html 【文章作者? layper 【作者邮? layper@yahoo.comcn 【作者主c? http://blog.csdn.net/layper/ 【下载地址? 自己搜烦下蝲 【编写语a? asm 【用工兗? IDA\reshack\radasm\ 【作者声明? 只是感兴,没有其他目的。失误之处敬误位大侠赐? -------------------------------------------------------------------------------- 【详l过E?br> 多谢大家的支?特别是flyq关心我的工作问?无已回报,只能l箋写些文供大家批评了!!! 上一我们所逆的是非常简单的win32汇编,d才两个api函数,一个消息框和ExitProcess函数,q篇我们涉及一个真正的H口 E序firstwindows,我学汇编是看了罗云{的《windows环境下汇~语aE序设计》才入门?我直接拿里面的例子来讲吧,如果?br> 者觉得不合?我会删去?!!!! Z讲一下学习逆向工程的方?q个跟学脱壳ҎcM,你先用一U语a写一个程?刚开始比较简单的),~译后用IDA或?br> 其他工具反汇~?观察源代码和反汇~代码有什么异?惛_法在逆向代码中逐渐靠近源代?最后再把他整理到编译工具中?br> 断编?在编译器中看那里出错,逐步修改,直至成功,最后ȝl验,q样׃逐步提高? 限于幅,我只把完整源码脓出来,未修改的反汇~在压羃包内?.asm,误行查?br> firstwindows源码 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; Sample code for < Win32ASM Programming > ; by |云? http://asm.yeah.net ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; FirstWindow.asm ; H口E序的模板代?br> ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; 使用 nmake 或下列命令进行编译和链接: ; ml /c /coff FirstWindow.asm ; Link /subsystem:windows FirstWindow.obj ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> .386 .model flat,stdcall option casemap:none ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; Include 文g定义 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> include windows.inc include gdi32.inc includelib gdi32.lib include user32.inc includelib user32.lib include kernel32.inc includelib kernel32.lib ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; 数据D?br> ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> .data? hInstance dd ? hWinMain dd ? .const szClassName db 'MyClass',0 szCaptionMain db 'My first Window !',0 szText db 'Win32 Assembly, Simple and powerful !',0 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; 代码D?br> ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> .code ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; H口q程 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> _ProcWinMain proc uses ebx edi esi,hWnd,uMsg,wParam,lParam local @stPs:PAINTSTRUCT local @stRect:RECT local @hDc mov eax,uMsg ;******************************************************************** .if eax == WM_PAINT invoke BeginPaint,hWnd,addr @stPs mov @hDc,eax invoke GetClientRect,hWnd,addr @stRect invoke DrawText,@hDc,addr szText,-1,\ addr @stRect,\ DT_SINGLELINE or DT_CENTER or DT_VCENTER invoke EndPaint,hWnd,addr @stPs ;******************************************************************** .elseif eax == WM_CLOSE invoke DestroyWindow,hWinMain invoke PostQuitMessage,NULL ;******************************************************************** .else invoke DefWindowProc,hWnd,uMsg,wParam,lParam ret .endif ;******************************************************************** xor eax,eax ret _ProcWinMain endp ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> _WinMain proc local @stWndClass:WNDCLASSEX local @stMsg:MSG invoke GetModuleHandle,NULL mov hInstance,eax invoke RtlZeroMemory,addr @stWndClass,sizeof @stWndClass ;******************************************************************** ; 注册H口c?br> ;******************************************************************** invoke LoadCursor,0,IDC_ARROW mov @stWndClass.hCursor,eax push hInstance pop @stWndClass.hInstance mov @stWndClass.cbSize,sizeof WNDCLASSEX mov @stWndClass.style,CS_HREDRAW or CS_VREDRAW mov @stWndClass.lpfnWndProc,offset _ProcWinMain mov @stWndClass.hbrBackground,COLOR_WINDOW + 1 mov @stWndClass.lpszClassName,offset szClassName invoke RegisterClassEx,addr @stWndClass ;******************************************************************** ; 建立q显C窗?br> ;******************************************************************** invoke CreateWindowEx,WS_EX_CLIENTEDGE,offset szClassName,offset szCaptionMain,\ WS_OVERLAPPEDWINDOW,\ 100,100,600,400,\ NULL,NULL,hInstance,NULL mov hWinMain,eax invoke ShowWindow,hWinMain,SW_SHOWNORMAL invoke UpdateWindow,hWinMain ;******************************************************************** ; 消息循环 ;******************************************************************** .while TRUE invoke GetMessage,addr @stMsg,NULL,0,0 .break .if eax == 0 invoke TranslateMessage,addr @stMsg invoke DispatchMessage,addr @stMsg .endw ret _WinMain endp ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> start: call _WinMain invoke ExitProcess,NULL ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> end start 在radasm~译通过. 用IAD反汇~蝲入完成后,点击文g-创徏文g-创徏asm文g得到未l修改的反汇~后得到?.asm文g(有点l口:)),直接?br> radasm打开,在radasm中ctrl+f5构徏q运行看看结果怎样,呵呵,出错? 因ؓ一步一步来讲比较长,我先把操作过E写下来,在慢慢解?1.asm修改如下: (一)增加模式定义\options语句\q原include语句 .686p .mmx .model flat,stdcall option casemap:none include WINDOWS.INC include kernel32.inc includelib kernel32.lib include user32.inc includelib user32.lib (?删除l构MSG\POINT\PAINTSTRUCT\RECT,q把余下的结构移动到 includelib user32.lib之后,即第一步之? 然后做如下修? tagMSG struc ; (sizeof=0x1C, standard type) hwnd dd ? ; offset message dd ? wParam dd ? lParam dd ? time dd ? pt POINT ? ;q里修改为pt POINT <> tagMSG ends tagPAINTSTRUCT struc ; (sizeof=0x40, standard type) hdc dd ? ; offset fErase dd ? rcPaint RECT ? ;q里修改为rcPaint RECT <> fRestore dd ? fIncUpdate dd ? rgbReserved db 32 dup(?) tagPAINTSTRUCT ends (?对函数的局部变量进行修?br>一׃个函数start\sub_401000和sub_401089,修改如下 sub_401089: sub_401089 proc near ; CODE XREF: startp Msg = MSG ptr -4Ch var_30 = WNDCLASSEXA ptr -30h 修改? sub_401089 proc near ; CODE XREF: startp LOCAL Msg:MSG LOCAL var_30:WNDCLASSEXA sub_401000: sub_401000 proc near ; DATA XREF: sub_401089+43o hDC = dword ptr -54h Rect = tagRECT ptr -50h Paint = PAINTSTRUCT ptr -40h hWnd = dword ptr 8 Msg = dword ptr 0Ch wParam = dword ptr 10h lParam = dword ptr 14h 修改? sub_401000 proc uses ebx edi esi ,hWnd,Msg,wParam,lParam ; DATA XREF: sub_401089+43o LOCAL hDC LOCAL Rect:tagRECT LOCAL Paint:PAINTSTRUCT (?_textD修?br>删除 在_textD前增加.code _text segment para public 'CODE' use32 assume cs:_text ;org 401000h assume es:nothing, ss:nothing, ds:_data, fs:nothing, gs:nothing ?br>_text ends 注意:中间的代码不要删?!! (?删除align 40h (?Ud修改_dataD?br>?code前增?data,q且把_dataD늧动到q里 ?br>_data segment para public 'DATA' use32 assume cs:_data ;org 403000h ?nbsp; ; sub_401089+A6r _data ends 删除 注意:中间的代码不要删?!! (?修改sub_401000的hWnd,只要出现有的都修改ؓhWnd1. (?删除_idataD?br> (? 把函数含有[ebp+变量]的代码全部修改ؓ变量 sub_401089的代?br>[ebp+var_30] 改ؓ var_30 [ebp+var_30.hCursor] 改ؓ var_30.hCursor [ebp+var_30.hInstance] 改ؓ var_30.hInstance [ebp+var_30.cbSize] 改ؓ var_30.cbSize [ebp+var_30.style] 改ؓ var_30.style [ebp+var_30.lpfnWndProc] 改ؓ var_30.lpfnWndProc [ebp+var_30.hbrBackground] 改ؓ var_30.hbrBackground [ebp+var_30.lpszClassName] 改ؓ var_30.lpszClassName [ebp+Msg] 改ؓ Msg sub_401000的代?br>[ebp+hDC] 改ؓ hDC [ebp+Rect] 改ؓ Rect [ebp+Paint] 改ؓ Paint [ebp+hWnd1] 改ؓ hWnd1 [ebp+Msg] 改ؓ Msg [ebp+wParam] 改ؓ wParam [ebp+lParam] 改ؓ lParam (?删掉函数多余的开?br>sub_401089? sub_401089 proc near ; CODE XREF: startp LOCAL Msg:MSG LOCAL var_30:WNDCLASSEXA push ebp ;删掉 mov ebp, esp 删掉 add esp, 0FFFFFFB4h ;删掉 sub_401000? sub_401000 proc near uses ebx edi esi ,hWnd1,Msg,wParam,lParam ; DATA XREF: sub_401089+43o LOCAL hDC LOCAL Rect:tagRECT LOCAL Paint:PAINTSTRUCT push ebp ;删掉 mov ebp, esp ;删掉 add esp, 0FFFFFFACh ;删掉 push ebx ;删掉 push edi ;删掉 push esi ;删掉 -------------------------------------------------------------------------------- 【经验ȝ?br> 其实只要你把反编译的代码按照radasm的提CZ步一步修改就可以? 解释: (一) q一步我在上已l解释的比较明白?因ؓ我们汇编开头就是那么几句代? include语句加回去这个是因ؓ我们~译的是汇编E序,q样肯定要用到库.如果IDA使用生成的_dataD?br>非常容易出?毕竟它只?识别"而不是源?!!!!!! (? (1)删除l构体MSG\POINT\PAINTSTRUCT\RECT 我们q行了第一步操作后,用radasmq行构徏,׃提示我们 D:\masm32\Include\WINDOWS.INC(7873) : error A2163: : POINT D:\masm32\Include\WINDOWS.INC(7874) : error A2163: : POINT D:\masm32\Include\WINDOWS.INC(8841) : error A2163: : MSG D:\masm32\Include\WINDOWS.INC(8842) : error A2163: : MSG D:\masm32\Include\WINDOWS.INC(8843) : error A2163: : MSG D:\masm32\Include\WINDOWS.INC(8844) : error A2163: : MSG D:\masm32\Include\WINDOWS.INC(8845) : error A2163: : MSG D:\masm32\Include\WINDOWS.INC(8846) : error A2163: : MSG D:\masm32\Include\WINDOWS.INC(8846) : fatal error A1016: 构徏时发生错? d~译旉 271 毫秒 q个q个意思说我们的库文g出错,q个可能?当然也有可能,但我想你首先应该惛_是你的反汇编代码? 先查询一下windows.inc"出错"的到底是什?br>POINT STRUCT x DWORD ? ;7873?br> y DWORD ? ;7874?br>POINT ENDS MSG STRUCT hwnd DWORD ? ;8841 message DWORD ? ;8842 wParam DWORD ? ;8843 lParam DWORD ? ;8844 time DWORD ? ;8845 pt POINT <> ;8846 MSG ENDS 呵呵,你再看看反汇~代码开?br>MSG struc ; (sizeof=0x1C, standard type) hwnd dd ? ; offset message dd ? wParam dd ? lParam dd ? time dd ? pt POINT ? MSG ends ; --------------------------------------------------------------------------- POINT struc ; (sizeof=0x8, standard type) x dd ? y dd ? POINT ends 明白怎么是这样了?我们反汇~代码重复定义了l构msg,point所以要把他们删?同理PAINTSTRUCT\RECT也删除了. (2)Ud剩余l构到include语句? q一步我是ؓ了省?剩余三个l构 tagMSG struc ; (sizeof=0x1C, standard type) hwnd dd ? ; offset message dd ? wParam dd ? lParam dd ? time dd ? pt POINT ? tagMSG ends ; --------------------------------------------------------------------------- WNDCLASSEXA struc ; (sizeof=0x30, standard type) cbSize dd ? style dd ? lpfnWndProc dd ? ; offset cbClsExtra dd ? cbWndExtra dd ? hInstance dd ? ; offset hIcon dd ? ; offset hCursor dd ? ; offset hbrBackground dd ? ; offset lpszMenuName dd ? ; offset lpszClassName dd ? ; offset hIconSm dd ? ; offset WNDCLASSEXA ends ; --------------------------------------------------------------------------- tagRECT struc ; (sizeof=0x10, standard type) left dd ? top dd ? right dd ? bottom dd ? tagRECT ends ; --------------------------------------------------------------------------- tagPAINTSTRUCT struc ; (sizeof=0x40, standard type) hdc dd ? ; offset fErase dd ? rcPaint RECT ? fRestore dd ? fIncUpdate dd ? rgbReserved db 32 dup(?) tagPAINTSTRUCT ends 其中tagMSG和tagPAINTSTRUCTl构分别用到了POINTl构和RECTl构,刚才我们删了,只有windows.inc中有 所以直接把他们剪切到这里省d错的Z. (3)修改l构 tagMSGl构和tagPAINTSTRUCTl构修改,我是参照windows.incl构定义Ҏ.l构中用l构<> :) q个不一定完全正?想研I这斚w多阅?inc文g (?函数修改 在反汇编代码中只要出现proc?到现在ؓ止我都看成是函数!!! IDA反汇~都它的函数都变成这个样?br>sub_401000 proc near ; DATA XREF: sub_401089+43o hDC = dword ptr -54h ;注意q里是减(-) Rect = tagRECT ptr -50h Paint = PAINTSTRUCT ptr -40h hWnd = dword ptr 8 ;q里其实是加(+) Msg = dword ptr 0Ch wParam = dword ptr 10h lParam = dword ptr 14h push ebp mov ebp, esp add esp, 0FFFFFFACh push ebx push edi push esi mov eax, [ebp+Msg] q里׃出现一个问?我们先前又删l构又改l构,而这里又用到l构,不修改编译也会出错的. 我们Ҏ比较正规的win32汇编E序格式. 刚才我提C加减的地方,ȝ一条规律给大家: 函数开?nbsp;xx = l构 - xxh q个是函数的局部变?可用local xx:l构替换. 函数开?nbsp;xx = dword ptr xxh q个是函数的参数,函数可改?br>函数?nbsp;proc xx (?_textD修?br>代码D?br>_text segment para public 'CODE' use32 assume cs:_text ;org 401000h assume es:nothing, ss:nothing, ds:_data, fs:nothing, gs:nothing ?br>_text ends IDAq种D写法有很大的弊?也是引v我们修改后的代码~译不通过的一个很重要原因.(具体我还说不上来,我还很菜) (?删除align 40h align是反汇编代码不通过~译的一U常见错? (?Ud修改_dataD?br>一般来说_dataD|我们的数据段,一般我们放在前?(呵呵,代码序也很重要) (?在数据段?br>hWnd dd ? ; DATA XREF: sub_401000+54r ; sub_401089+94w sub_401089+9Br ; sub_401089+A6r 提示hWnd是函数sub_401089?q不是sub_401000,所以要重命名他? (?删除_idataD?br>include语句已经有了函数定义,再保留这里就会出? (? 把函数含有[ebp+变量]的代码全部修改ؓ变量 [ebp+]q个是编译器加上ȝ,我们直接用的?~译后会变成[ebp+ebp+变量],Ҏ出错. (?删掉函数多余的开?br>反汇~代码中,~译器ؓ你加上象q样的代?br> push ebp mov ebp, esp add esp, 0FFFFFFB4h 如果你直接编译的话代码就变成? push ebp mov ebp, esp add esp, 0FFFFFFB4h push ebp mov ebp, esp add esp, 0FFFFFFB4h 重新~译也容易出?所以要删去. 同理,要注意函数结束地方看看是否要删去. (十一) q里说一点跟上一不同的是没有删除_rdata,因ؓq里有我们程序要的数?所以没删除.?br>果你q想优化自己弄了!!! 呵呵,l于弄完q篇?把它整理好花了好大工?错误隑օ,请多包涵!!!! -------------------------------------------------------------------------------- 【版权声明? 本文原创于看雪技术论? 转蝲h明作者ƈ保持文章的完? 谢谢! 2007q?3?4?nbsp;12:21:20 ]]> [zz]׃的娱?IDA逆向工程入门(? http://www.shnenglu.com/momoxiao/archive/2009/12/25/104039.html默 默 Fri, 25 Dec 2009 04:10:00 GMT http://www.shnenglu.com/momoxiao/archive/2009/12/25/104039.html http://www.shnenglu.com/momoxiao/comments/104039.html http://www.shnenglu.com/momoxiao/archive/2009/12/25/104039.html#Feedback 0 http://www.shnenglu.com/momoxiao/comments/commentRss/104039.html http://www.shnenglu.com/momoxiao/services/trackbacks/104039.html 【文章作者? layper 【作者邮? layper@yahoo.com.cn 【作者主c? http://blog.csdn.net/layper/ 【下载地址? 自己搜烦下蝲 【作者声明? 只是感兴,没有其他目的。失误之处敬误位大侠赐? -------------------------------------------------------------------------------- 【详l过E?br> q个是第二篇,入门p从最单的开?!!!!!!! Z么选汇~程?因ؓ在IDA逆向出来的就是汇~语a.所以选这个是最好入门的.在这之前你先准备好几样工?IDA,masm32汇编工具包ƈ安装? 在radasm讄好你的\? (一)最单的win32汇编E序源码 hellow.asm .386 .model flat,stdcall option casemap:none include WINDOWS.INC include user32.inc include kernel32.inc includelib user32.lib includelib kernel32.lib .data sztitle db "你好",0 sztext db "你好!你有个好的开?!!",0 .code start: invoke MessageBox,NULL,offset sztext,offset sztitle,MB_OK invoke ExitProcess,NULL end start radasm默认~译.无资源段 (?IDA自动识别的反汇编代码(未优化直接保? ; ; 赏屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯? ; ?This file is generated by The Interactive Disassembler (IDA) ? ; ?Copyright (c) 2006 by DataRescue sa/nv, <ida@datarescue.com> ? ; ?Licensed to: Paul Ashton - Blue Lane Technologies (1-user Advanced 03/2006) ?s ; 韧屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯? ; ; Input MD5 : 10721E858F8E4DA3413D6FBFAE63E7B3 ; File Name : D:\lyp\hellow\hellow.exe ; Format : Portable executable for 80386 (PE) ; Imagebase : 400000 ; Section 1. (virtual address 00001000) ; Virtual size : 00000026 ( 38.) ; Section size in file : 00000200 ( 512.) ; Offset to raw data for section: 00000400 ; Flags 60000020: Text Executable Readable ; Alignment : default .686p .mmx .model flat ; 屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯? ; Segment type: Pure code ; Segment permissions: Read/Execute _text segment para public 'CODE' use32 assume cs:_text ;org 401000h assume es:nothing, ss:nothing, ds:_data, fs:nothing, gs:nothing ; *************** S U B R O U T I N E *************************************** public start start proc near push 0 ; uType push offset Caption ; "你好" push offset Text ; "你好!你有个好的开?!!" push 0 ; hWnd call MessageBoxA push 0 ; uExitCode call ExitProcess start endp ; [00000006 BYTES: COLLAPSED FUNCTION MessageBoxA. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION ExitProcess. PRESS KEYPAD "+" TO EXPAND] align 200h _text ends ; Section 2. (virtual address 00002000) ; Virtual size : 00000092 ( 146.) ; Section size in file : 00000200 ( 512.) ; Offset to raw data for section: 00000600 ; Flags 40000040: Data Readable ; Alignment : default ; ; Imports from kernel32.dll ; ; 屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯? ; Segment type: Externs ; _idata ; void __stdcall ExitProcess(UINT uExitCode) extrn __imp_ExitProcess:dword ; DATA XREF: ExitProcessr ; ; Imports from user32.dll ; ; int __stdcall MessageBoxA(HWND hWnd,LPCSTR lpText,LPCSTR lpCaption,UINT uType) extrn __imp_MessageBoxA:dword ; DATA XREF: MessageBoxAr ; 屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯? ; Segment type: Pure data ; Segment permissions: Read _rdata segment para public 'DATA' use32 assume cs:_rdata ;org 402010h db 54h ; T db 20h db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 6Ah ; j db 20h db 0 db 0 db 8 db 20h db 0 db 0 db 4Ch ; L db 20h db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 84h ; ? db 20h db 0 db 0 db 0 db 20h db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 76h ; v db 20h db 0 db 0 db 0 db 0 db 0 db 0 db 5Ch ; \ db 20h db 0 db 0 db 0 db 0 db 0 db 0 db 9Dh ; ? db 1 db 4Dh ; M db 65h ; e db 73h ; s db 73h ; s db 61h ; a db 67h ; g db 65h ; e db 42h ; B db 6Fh ; o db 78h ; x db 41h ; A db 0 db 75h ; u db 73h ; s db 65h ; e db 72h ; r db 33h ; 3 db 32h ; 2 db 2Eh ; . db 64h ; d db 6Ch ; l db 6Ch ; l db 0 db 0 db 80h ; ? db 0 db 45h ; E db 78h ; x db 69h ; i db 74h ; t db 50h ; P db 72h ; r db 6Fh ; o db 63h ; c db 65h ; e db 73h ; s db 73h ; s db 0 db 6Bh ; k db 65h ; e db 72h ; r db 6Eh ; n db 65h ; e db 6Ch ; l db 33h ; 3 db 32h ; 2 db 2Eh ; . db 64h ; d db 6Ch ; l db 6Ch ; l db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 _rdata ends ; Section 3. (virtual address 00003000) ; Virtual size : 0000001E ( 30.) ; Section size in file : 00000200 ( 512.) ; Offset to raw data for section: 00000800 ; Flags C0000040: Data Readable Writable ; Alignment : default ; 屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯? ; Segment type: Pure data ; Segment permissions: Read/Write _data segment para public 'DATA' use32 assume cs:_data ;org 403000h ; char Caption[] Caption db '你好',0 ; DATA XREF: start+2o ; char Text[] Text db '你好!你有个好的开?!!',0 ; DATA XREF: start+7o align 200h _data ends end start 用radasm~译成功,不用修改!!! (?比对文g (1)模式定义 相同? .386 .686p ;不同 ?nbsp; .mmx .model flat,stdcall .model flat option casemap:none ?nbsp; ;不同 我的IDA默认的ؓ686p模式,model语句无语a模式,无option语句. (2)inc文g,lib文gd 源文件中?br> include WINDOWS.INC include user32.inc include kernel32.inc includelib user32.lib includelib kernel32.lib 消失在代码中,要寻扑֛他们!! q几个语句其实就是连接系l的dll文g?在反汇编代码中寻找user32.dll,kernel32.dll,扑ֈq里 ; Imports from kernel32.dll ; ; 屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯? ; Segment type: Externs ; _idata ; void __stdcall ExitProcess(UINT uExitCode) extrn __imp_ExitProcess:dword ; DATA XREF: ExitProcessr ; ; Imports from user32.dll ; ; int __stdcall MessageBoxA(HWND hWnd,LPCSTR lpText,LPCSTR lpCaption,UINT uType) extrn __imp_MessageBoxA:dword ; DATA XREF: MessageBoxAr 注释很明白了,输入表有两个dll在_idataD?include语句的在_idataD|? (3)D定义的变化 源代码中D定义是q样 .D名 而反汇编中的D定?br> D名 segment para public 'DATA' use32 assume cs:_data D名 ends 传统的dos汇编写法. (4)D늚增减 我们通过比对,发现D늚数量跟我们原本的不一?br> 原本我们只有两个D?br> .data?codeD?而反汇编后变?br> .text?idata?rdata?dataD?br> l过仔细辨认你就可以发现 反汇~的textD就是源代码中的.codeD?dataD|代码D?.idata?rdata是编译器生成?而idata是寻找include语句的地? .idata基本没什么用?可以删掉. (5)数据D?br> 通过比对发现基本上一致无什么增?增加了一?nbsp; align 200h 删掉卛_. (6)代码D变?br> 入口函数变化 public start start proc near push 0 ; uType push offset Caption ; "你好" push offset Text ; "你好!你有个好的开?!!" push 0 ; hWnd call MessageBoxA push 0 ; uExitCode call ExitProcess start endp 。。。。。?br> 。。。。。。?br> end start 注意end start攑֜了所有段后面 到这里我们大体上看完q个E序反汇~的大体轮廓?br> -------------------------------------------------------------------------------- 【经验ȝ?br> (1)模式定义了语言模式和opention语句Q我们要看情冉|否加回上厅R?br> (2)include语句L_idata中的dll?得到常用包含库文? (3).rdateD不用看,可以删掉 (4)入口开始处Lstart. -------------------------------------------------------------------------------- 【版权声明? 本文原创于看雪技术论? 转蝲h明作者ƈ保持文章的完? 谢谢! 2007q?3?2?nbsp;13:56:14 ]]> [zz]׃的娱?IDA逆向工程入门(一) http://www.shnenglu.com/momoxiao/archive/2009/12/25/104038.html默 默 Fri, 25 Dec 2009 04:09:00 GMT http://www.shnenglu.com/momoxiao/archive/2009/12/25/104038.html http://www.shnenglu.com/momoxiao/comments/104038.html http://www.shnenglu.com/momoxiao/archive/2009/12/25/104038.html#Feedback 1 http://www.shnenglu.com/momoxiao/comments/commentRss/104038.html http://www.shnenglu.com/momoxiao/services/trackbacks/104038.html ?? ׃的娱?IDA逆向工程入门(一)(?(?(? ?? layper ?? 2007-03-08,23:49?? http://bbs.pediy.com/showthread.php?t=40765 【文章标题? ׃的娱?IDA逆向工程入门(一) 【文章作者? layper 【作者邮? layper@yahoo.com.cn 【作者主c? http://blog.csdn.net/layper/ 【下载地址? 自己搜烦下蝲 【作者声明? 只是感兴,没有其他目的。失误之处敬误位大侠赐? -------------------------------------------------------------------------------- 【详l过E?br> 牢骚一?对不起大家了.我是?004q底开始玩crack?曄得到很多朋友的帮?如hyd009,拉登徒弟,天边涯等以前poje论坛兄弟们帮?可惜已经?br> 碰见他们了).之间学习脱壳又到看雪论坛学习提问,得到很多高手的回{帮助尤其是fly大侠最为热?我之所以来q个论坛,全是因ؓfly大侠.看了?br> 多他的文?从中受益非浅.在此向你们说声谢谢了. IDA是一个非常强大的反汇~工?在reverse engineerings中首选的工具.看这文章首先明一个目?我不是破?如果你要看破解某某Y件的文章 你可略过,q也不是什么高q文章,因ؓ,我刚开始学习逆向工程,高深的理论知识我不懂!!!׃本h知识所限错漏难?请多包含. 在我看来,逆向工程是学习别Y件编E的一U好Ҏ.当你手头上没什么资料可以利用时,或者想了解或者模仿别人的软g?逆向工程不失ZU好办法. (q就是ؓ什么那么多公司在安装协议要用户同意不能逆向的原?)). 好多的逆向工程的文章一开始就跟你讲什么虚函数,析构函数,库等{?q些实是经?理论性很?适合专业或高手看?我是一开始就学破?然后接触汇编 语言,之后又看了一些ؕ七八p的?~程菜鸟都算不上!!!一开始就来分析这么仔l?q么_求精,Ҏ来说----蚊子叮猪屁股---太肥?:) Ҏ来说,能够把Y仉向后的出源?q新编译能够通过是我现阶D|Ҏ得到满?依照q个思\,我开始就xIDA里面反汇~的代码修改后运?但实?br> 证明q个不是一个有效好的方?要修改IDA反编译出来的代码也比较困?因ؓIDA中很多高U语a的结?高语言的库,关键字在汇编中不支持或者冲H?q?br> 也很复杂,所以说, layper逆向工程W一要点: (一)从那里来,回到那里? 比如汇编语言写的软g,你就把它逆回汇编语言. 用工具VC++写的软g,你就把他逆回VC++? DELPHI的逆回DELPHI?q个用DEDE逆向配合应该更好). 当然,q个不是性规?有些软g他虽然用高语言写的,但反汇编代码利用价值已l非帔R? Ҏq一点要?我们不得不对逆向工程分析的研I分c?卛_为asm,vc++,delphiq三大类,其他的如.net技术等不是我涉及的内容. 下一开?我分别用最单的win32E序开始分c讲q? (?虽然逆向工程q个x在心里已l很久了,但实际学习就是这几天的事,本h水^有限,做法可能不可?或者可W请多包?下篇 心情好再写了.) -------------------------------------------------------------------------------- 【版权声明? 本文原创于看雪技术论? 转蝲h明作者ƈ保持文章的完? 谢谢! 2007q?3?2?nbsp;11:49:08 ]]> [zz]用importREC修复Import?/title> http://www.shnenglu.com/momoxiao/archive/2009/12/24/103990.html默 默 Thu, 24 Dec 2009 13:58:00 GMT http://www.shnenglu.com/momoxiao/archive/2009/12/24/103990.html http://www.shnenglu.com/momoxiao/comments/103990.html http://www.shnenglu.com/momoxiao/archive/2009/12/24/103990.html#Feedback 0 http://www.shnenglu.com/momoxiao/comments/commentRss/103990.html http://www.shnenglu.com/momoxiao/services/trackbacks/103990.html 1、用ollydbg扑ֈ正确的OEP(脱壳和修复导入表都要用到)
2、脱壛_当前q程,如脱壛_来的E序不能q行Q提C无法定位程序输入点Q需要?/p>
importREC修复导入表?/p>
3、打开importRECQ选正ollydbg正在调试的进E,填入正确的OEP,点ITA AutoSearchQ?/p>
如oep正确得到正提C,点GetImportQ得到正的导入表。点Fix DumpQ选择脱壳
出来的保存文ӞDone!Q修正后的程序ؓ原程序名后加一下划U,原程序不会被修改。)
]]>
Ʒþþþþ |
97þþþƷר |
ձþĻ |
Ʒþþþ |
ֻоƷþ |
þþþþþ |
ŷһþۺ
|
þĻ˿ |
þþƵ |
þþþþۺ |
99þֻоƷ |
˼˼þ99ֻƵƷ66 |
˾þƵ |
ƷŮþþþ99 |
Ůþþþþ |
þþþӰԺС
|
þùֻоƷ |
þݺҹҹ96
|
þ㽶߿ۿƷyw |
þþƷƷëƬ |
2022Ʒþþþ |
þһ |
þþƷ˵
|
Ʒһۺ99þ |
þþۺϾɫۺ98 |
ձþþþĻ |
þþþþþþþþ |
þŷۺ |
99ھƷþþþþþ |
þùƷǿ |
þùȾƷҰAV |
Ʒþ |
һþ㽶 |
ɫۺϺϾþۿ |
ھƷþþþþĻ |
aëƬþ |
Ʒþþþþ |
þ91Ʒ91þû |
99þþƷһ |
þþƷһ |
˺ݺۺϾþ88 |