??xml version="1.0" encoding="utf-8" standalone="yes"?>久久国产成人亚洲精品影院,午夜精品久久影院蜜桃,久久综合亚洲色一区二区三区http://www.shnenglu.com/momoxiao/category/14762.htmlzh-cnTue, 27 Sep 2011 23:03:53 GMTTue, 27 Sep 2011 23:03:53 GMT60phpmyadminhttp://www.shnenglu.com/momoxiao/archive/2011/09/24/156717.htmlSat, 24 Sep 2011 14:09:00 GMThttp://www.shnenglu.com/momoxiao/archive/2011/09/24/156717.htmlhttp://www.shnenglu.com/momoxiao/comments/156717.htmlhttp://www.shnenglu.com/momoxiao/archive/2011/09/24/156717.html#Feedback0http://www.shnenglu.com/momoxiao/comments/commentRss/156717.htmlhttp://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


2011-09-24 22:09 发表评论
]]>
django debug toolbarhttp://www.shnenglu.com/momoxiao/archive/2011/06/14/148655.htmlTue, 14 Jun 2011 09:40:00 GMThttp://www.shnenglu.com/momoxiao/archive/2011/06/14/148655.htmlhttp://www.shnenglu.com/momoxiao/comments/148655.htmlhttp://www.shnenglu.com/momoxiao/archive/2011/06/14/148655.html#Feedback0http://www.shnenglu.com/momoxiao/comments/commentRss/148655.htmlhttp://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


2011-06-14 17:40 发表评论
]]>
安装MYSQL后,Apache http server 遇到问题需要关?/title><link>http://www.shnenglu.com/momoxiao/archive/2010/04/19/112977.html</link><dc:creator>默</dc:creator><author>默</author><pubDate>Mon, 19 Apr 2010 05:04:00 GMT</pubDate><guid>http://www.shnenglu.com/momoxiao/archive/2010/04/19/112977.html</guid><wfw:comment>http://www.shnenglu.com/momoxiao/comments/112977.html</wfw:comment><comments>http://www.shnenglu.com/momoxiao/archive/2010/04/19/112977.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/momoxiao/comments/commentRss/112977.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/momoxiao/services/trackbacks/112977.html</trackback:ping><description><![CDATA[把MYSQL下的libmysql.dll拯到系l目录下- -<img src ="http://www.shnenglu.com/momoxiao/aggbug/112977.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/momoxiao/" target="_blank">默</a> 2010-04-19 13:04 <a href="http://www.shnenglu.com/momoxiao/archive/2010/04/19/112977.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>80端口 被占?/title><link>http://www.shnenglu.com/momoxiao/archive/2010/04/13/112489.html</link><dc:creator>默</dc:creator><author>默</author><pubDate>Tue, 13 Apr 2010 11:58:00 GMT</pubDate><guid>http://www.shnenglu.com/momoxiao/archive/2010/04/13/112489.html</guid><wfw:comment>http://www.shnenglu.com/momoxiao/comments/112489.html</wfw:comment><comments>http://www.shnenglu.com/momoxiao/archive/2010/04/13/112489.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/momoxiao/comments/commentRss/112489.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/momoxiao/services/trackbacks/112489.html</trackback:ping><description><![CDATA[装Apache提示80端口被占?br>cmdQnetstat -anoQ占?0端口的程序pid?168<br> <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: #eeeeee;"><span style="color: #000000;">C:\Documents and Settings\Administrator</span><span style="color: #000000;">></span><span style="color: #000000;">netstat </span><span style="color: #000000;">-</span><span style="color: #000000;">ano<br><br>Active Connections<br><br>  Proto  Local Address          Foreign Address        State           PID<br>  TCP    </span><span style="color: #000000;">0.0</span><span style="color: #000000;">.</span><span style="color: #000000;">0.0</span><span style="color: #000000;">:</span><span style="color: #000000;">80</span><span style="color: #000000;">             </span><span style="color: #000000;">0.0</span><span style="color: #000000;">.</span><span style="color: #000000;">0.0</span><span style="color: #000000;">:</span><span style="color: #000000;">0</span><span style="color: #000000;">              LISTENING       </span><span style="color: #000000;">1168</span></div> 打开d理器,查看->选择列,加上pid<br>pid=1168的是Thunder5.exe<br>q雷BT的TCP端口?0Q改?img src ="http://www.shnenglu.com/momoxiao/aggbug/112489.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/momoxiao/" target="_blank">默</a> 2010-04-13 19:58 <a href="http://www.shnenglu.com/momoxiao/archive/2010/04/13/112489.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>install samba for Fedora10http://www.shnenglu.com/momoxiao/archive/2010/03/23/110357.htmlTue, 23 Mar 2010 08:08:00 GMThttp://www.shnenglu.com/momoxiao/archive/2010/03/23/110357.htmlhttp://www.shnenglu.com/momoxiao/comments/110357.htmlhttp://www.shnenglu.com/momoxiao/archive/2010/03/23/110357.html#Feedback0http://www.shnenglu.com/momoxiao/comments/commentRss/110357.htmlhttp://www.shnenglu.com/momoxiao/services/trackbacks/110357.htmlinstall
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 -192.168.1.101 -U administrator
Enter administrator
's password: 



2010-03-23 16:08 发表评论
]]>
SourceInsight linux内核 汇编 .shttp://www.shnenglu.com/momoxiao/archive/2010/02/06/107349.htmlFri, 05 Feb 2010 18:31:00 GMThttp://www.shnenglu.com/momoxiao/archive/2010/02/06/107349.htmlhttp://www.shnenglu.com/momoxiao/comments/107349.htmlhttp://www.shnenglu.com/momoxiao/archive/2010/02/06/107349.html#Feedback0http://www.shnenglu.com/momoxiao/comments/commentRss/107349.htmlhttp://www.shnenglu.com/momoxiao/services/trackbacks/107349.html  在File   Filter里添?.S卛_  


2010-02-06 02:31 发表评论
]]>
(zz)vmware |络配置实例?windows xp host + linux guesthttp://www.shnenglu.com/momoxiao/archive/2010/02/05/107322.htmlFri, 05 Feb 2010 15:53:00 GMThttp://www.shnenglu.com/momoxiao/archive/2010/02/05/107322.htmlhttp://www.shnenglu.com/momoxiao/comments/107322.htmlhttp://www.shnenglu.com/momoxiao/archive/2010/02/05/107322.html#Feedback1http://www.shnenglu.com/momoxiao/comments/commentRss/107322.htmlhttp://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



2010-02-05 23:53 发表评论
]]>
[zz]虚拟机Virtual PCQVmware里安装SoftICEhttp://www.shnenglu.com/momoxiao/archive/2010/01/06/104950.htmlWed, 06 Jan 2010 10:28:00 GMThttp://www.shnenglu.com/momoxiao/archive/2010/01/06/104950.htmlhttp://www.shnenglu.com/momoxiao/comments/104950.htmlhttp://www.shnenglu.com/momoxiao/archive/2010/01/06/104950.html#Feedback0http://www.shnenglu.com/momoxiao/comments/commentRss/104950.htmlhttp://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;

2010-01-06 18:28 发表评论
]]>
SoftICE - Matching PDB file not foundhttp://www.shnenglu.com/momoxiao/archive/2010/01/06/104933.htmlWed, 06 Jan 2010 09:35:00 GMThttp://www.shnenglu.com/momoxiao/archive/2010/01/06/104933.htmlhttp://www.shnenglu.com/momoxiao/comments/104933.htmlhttp://www.shnenglu.com/momoxiao/archive/2010/01/06/104933.html#Feedback0http://www.shnenglu.com/momoxiao/comments/commentRss/104933.htmlhttp://www.shnenglu.com/momoxiao/services/trackbacks/104933.html

2010-01-06 17:35 发表评论
]]>
[zz]׃的娱?IDA逆向工程入门(?-汇编E序实战 http://www.shnenglu.com/momoxiao/archive/2009/12/25/104043.htmlFri, 25 Dec 2009 04:12:00 GMThttp://www.shnenglu.com/momoxiao/archive/2009/12/25/104043.htmlhttp://www.shnenglu.com/momoxiao/comments/104043.htmlhttp://www.shnenglu.com/momoxiao/archive/2009/12/25/104043.html#Feedback0http://www.shnenglu.com/momoxiao/comments/commentRss/104043.htmlhttp://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

2009-12-25 12:12 发表评论
]]>
[zz]׃的娱?IDA逆向工程入门(?http://www.shnenglu.com/momoxiao/archive/2009/12/25/104040.htmlFri, 25 Dec 2009 04:10:00 GMThttp://www.shnenglu.com/momoxiao/archive/2009/12/25/104040.htmlhttp://www.shnenglu.com/momoxiao/comments/104040.htmlhttp://www.shnenglu.com/momoxiao/archive/2009/12/25/104040.html#Feedback0http://www.shnenglu.com/momoxiao/comments/commentRss/104040.htmlhttp://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

2009-12-25 12:10 发表评论
]]>
[zz]׃的娱?IDA逆向工程入门(?http://www.shnenglu.com/momoxiao/archive/2009/12/25/104039.htmlFri, 25 Dec 2009 04:10:00 GMThttp://www.shnenglu.com/momoxiao/archive/2009/12/25/104039.htmlhttp://www.shnenglu.com/momoxiao/comments/104039.htmlhttp://www.shnenglu.com/momoxiao/archive/2009/12/25/104039.html#Feedback0http://www.shnenglu.com/momoxiao/comments/commentRss/104039.htmlhttp://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

2009-12-25 12:10 发表评论
]]>
[zz]׃的娱?IDA逆向工程入门(一)http://www.shnenglu.com/momoxiao/archive/2009/12/25/104038.htmlFri, 25 Dec 2009 04:09:00 GMThttp://www.shnenglu.com/momoxiao/archive/2009/12/25/104038.htmlhttp://www.shnenglu.com/momoxiao/comments/104038.htmlhttp://www.shnenglu.com/momoxiao/archive/2009/12/25/104038.html#Feedback1http://www.shnenglu.com/momoxiao/comments/commentRss/104038.htmlhttp://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



2009-12-25 12:09 发表评论
]]>
[zz]用importREC修复Import?/title><link>http://www.shnenglu.com/momoxiao/archive/2009/12/24/103990.html</link><dc:creator>默</dc:creator><author>默</author><pubDate>Thu, 24 Dec 2009 13:58:00 GMT</pubDate><guid>http://www.shnenglu.com/momoxiao/archive/2009/12/24/103990.html</guid><wfw:comment>http://www.shnenglu.com/momoxiao/comments/103990.html</wfw:comment><comments>http://www.shnenglu.com/momoxiao/archive/2009/12/24/103990.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/momoxiao/comments/commentRss/103990.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/momoxiao/services/trackbacks/103990.html</trackback:ping><description><![CDATA[<p style="text-indent: 2em;">1、用ollydbg扑ֈ正确的OEP(脱壳和修复导入表都要用到)</p> <p style="text-indent: 2em;">2、脱壛_当前q程,如脱壛_来的E序不能q行Q提C无法定位程序输入点Q需要?/p> <p style="text-indent: 2em;">imp<wbr>ortREC修复导入表?/p> <p style="text-indent: 2em;">3、打开imp<wbr>ortRECQ选正ollydbg正在调试的进E,填入正确的OEP,点ITA AutoSearchQ?/p> <p style="text-indent: 2em;">如oep正确得到正提C,点GetImp<wbr>ortQ得到正的导入表。点Fix DumpQ选择脱壳</p> <p style="text-indent: 2em;">出来的保存文ӞDone!Q修正后的程序ؓ原程序名后加一下划U,原程序不会被修改。)</p><img src ="http://www.shnenglu.com/momoxiao/aggbug/103990.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/momoxiao/" target="_blank">默</a> 2009-12-24 21:58 <a href="http://www.shnenglu.com/momoxiao/archive/2009/12/24/103990.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.shnenglu.com/" title="精品视频久久久久">精品视频久久久久</a> <div class="friend-links"> </div> </div> </footer> <a href="http://www.javareport.cn" target="_blank">Ʒþþþþ</a>| <a href="http://www.peopleim.cn" target="_blank">97þþþ޾Ʒר</a>| <a href="http://www.xmxfz.cn" target="_blank">ձþĻ</a>| <a href="http://www.v4169.cn" target="_blank">Ʒþþþ</a>| <a href="http://www.ysmyy.com.cn" target="_blank">ֻоƷþ</a>| <a href="http://www.huiju58.cn" target="_blank">þþþþþ</a>| <a href="http://www.hedv.com.cn" target="_blank">ŷһþۺ </a>| <a href="http://www.txt115.cn" target="_blank">þĻ˿</a>| <a href="http://www.111party.cn" target="_blank">þþƵ</a>| <a href="http://www.ylcq185.cn" target="_blank">þþþþۺ</a>| <a href="http://www.seatravel.com.cn" target="_blank">99þֻоƷ</a>| <a href="http://www.tanzhun.cn" target="_blank">˼˼þ99ֻƵƷ66</a>| <a href="http://www.javaoop.cn" target="_blank">˾þƵ</a>| <a href="http://www.inconfont.cn" target="_blank">޾ƷŮþþþ99</a>| <a href="http://www.ctihf.com.cn" target="_blank">Ůþþþþ</a>| <a href="http://www.xinhuahz.cn" target="_blank">þþþӰԺС </a>| <a href="http://www.ccco.org.cn" target="_blank">þùֻоƷ</a>| <a href="http://www.zhangmengm.cn" target="_blank">þݺҹҹ96׽ </a>| <a href="http://www.lantianhotel.cn" target="_blank">þ㽶߿ۿƷyw</a>| <a href="http://www.135gkr4.cn" target="_blank">þþƷƷëƬ</a>| <a href="http://www.bitpter.cn" target="_blank">2022Ʒþþþ</a>| <a href="http://www.pouhai.cn" target="_blank">޾þһ</a>| <a href="http://www.cnmncom.cn" target="_blank">þþƷ˵ </a>| <a href="http://www.laowang66.com.cn" target="_blank">޾Ʒһۺ99þ</a>| <a href="http://www.mutian100.cn" target="_blank">þþۺϾɫۺ98</a>| <a href="http://www.yunva.cn" target="_blank">ձþþþĻ</a>| <a href="http://www.520king.cn" target="_blank">þþþþþþþþ</a>| <a href="http://www.lishuiqiao.cn" target="_blank">þŷ޹ۺ</a>| <a href="http://www.dituibangbang.cn" target="_blank">99ھƷþþþþþ</a>| <a href="http://www.guangzb.cn" target="_blank">þù׾Ʒǿ</a>| <a href="http://www.czqxj.cn" target="_blank">þùȾƷҰAV</a>| <a href="http://www.58city.cn" target="_blank">Ʒþ</a>| <a href="http://www.mailiangjin.cn" target="_blank">һþ㽶</a>| <a href="http://www.x4565.cn" target="_blank">ɫۺϺϾþۿ</a>| <a href="http://www.taobaoluntan.net.cn" target="_blank">ھƷþþþþĻ</a>| <a href="http://www.lvtonggaoerfu.cn" target="_blank">aëƬþ</a>| <a href="http://www.nic-xie.cn" target="_blank">Ʒþþþþ</a>| <a href="http://www.zhouyangla.cn" target="_blank">þ91Ʒ91þû</a>| <a href="http://www.3djeans.cn" target="_blank">99þþƷһ</a>| <a href="http://www.vqsg.cn" target="_blank">þþƷһ</a>| <a href="http://www.pingyaonews.cn" target="_blank">˺ݺۺϾþ88</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>